次のコードでは、安全に使用でき_test
、値が であると期待できNO
ますか? または、常に明示的に初期化する必要があり- (id)init
ますか?
@implementation Test {
BOOL _test;
}
次のコードでは、安全に使用でき_test
、値が であると期待できNO
ますか? または、常に明示的に初期化する必要があり- (id)init
ますか?
@implementation Test {
BOOL _test;
}
すべてのインスタンス変数が 0 に初期化されると想定しても安全です。
ただし、手動で初期化されていない場合、ジャンクを指すローカル/メソッドスコープの変数には当てはまりません。
今後の参考のために、Rob Napier が指摘しているように、これはのドキュメントに記載+ (id)alloc
されています。
新しいインスタンスの
isa
インスタンス変数は、クラスを記述するデータ構造に初期化されます。他のすべてのインスタンス変数のメモリは に設定され0
ます。
主にトレーサビリティと読みやすさのために、明示的に初期化することに慣れています。しかし、 の定義を見ると、それは 0の場合に他ならないBOOL
ことがわかります。そのため、安全に であると期待できると思います。NO
#define
_test
NO
Boolean とその処理についての本当に良い投稿はObjective-C です: BOOL vs bool