2010-09-19

What is initial value?

オブジェクトや変数を使うとき、初期値がどうなっているか、です。

自分でMyClassを作ったとき、

@interface MyClass {

NSString *string;

}


MyClass *instance = [[MyClass alloc] init];<--stringはゼロで初期化される


この場合は特に自分でinitを実装しなくても、MyClassの持つすべてのプロパティはデフォルトのinitによってゼロに初期化されます。initをオーバーライドして自分で初期化したいときはゼロ以外で初期化したいときとなります。

ところが下記のようなオート変数で使う場合は初期値は不定になります(なぜならだれも何もしないから)。

NSString *string;<--初期値は不定

通常はnilで初期化しておくのが安全です。

NSString *string = nil;<--nilで初期化

nilのまま関数コールしても何もおこりませんが、不定値のまま無事に実行されてしまうとデバッグが難しくなります。

No comments:

Post a Comment