7

次のコードでは、安全に使用でき_test、値が であると期待できNOますか? または、常に明示的に初期化する必要があり- (id)initますか?

@implementation Test {
    BOOL _test;
}
4

2 に答える 2

9

すべてのインスタンス変数が 0 に初期化されると想定しても安全です。

ただし、手動で初期化されていない場合、ジャンクを指すローカル/メソッドスコープの変数には当てはまりません。

今後の参考のために、Rob Napier が指摘しているように、これはのドキュメントに記載+ (id)allocされています。

新しいインスタンスのisaインスタンス変数は、クラスを記述するデータ構造に初期化されます。他のすべてのインスタンス変数のメモリは に設定され0ます。

于 2012-05-18T13:02:55.830 に答える
0

主にトレーサビリティと読みやすさのために、明示的に初期化することに慣れています。しかし、 の定義を見ると、それは 0の場合に他ならないBOOLことがわかります。そのため、安全に であると期待できると思います。NO#define_testNO

Boolean とその処理についての本当に良い投稿はObjective-C です: BOOL vs bool

于 2012-05-18T13:07:22.110 に答える