次のコードでは、安全に使用でき_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_testNO
Boolean とその処理についての本当に良い投稿はObjective-C です: BOOL vs bool