.h
ファイルにこれがある場合:
int index;
そして、.m
私が持っているファイルで:
if (index == nil)
に値を割り当てていませんがindex
、それは当てはまりますか?
編集
nil はオブジェクトにのみ使用されると思います。では、値が割り当てられていない int の状態はどのようなものでしょうか?
.h
ファイルにこれがある場合:
int index;
そして、.m
私が持っているファイルで:
if (index == nil)
に値を割り当てていませんがindex
、それは当てはまりますか?
編集
nil はオブジェクトにのみ使用されると思います。では、値が割り当てられていない int の状態はどのようなものでしょうか?
int に「nil」というものはありません。それはオブジェクト値です。デフォルトで初期化される変数については、次のとおりです。
上記の最初のルールは、ローカル オブジェクト変数にも適用されることに注意してください。それらは nil で初期化されません。(ただし、オブジェクト型を持つインスタンス変数はそうなります。)
変数は、値を割り当てる前は技術的に未定義です (任意の値を持つ可能性があります)。ほとんどの場合、それはゼロに等しくなります。また、nil と NULL の両方がゼロに定義されます。ただし、この比較はお勧めしません。ポインターを比較する場合にのみ nil を使用する必要があります (プリミティブで使用することは意図されていません)。
まだ割り当てられていない整数の値は、その宣言によって異なりint
ます。他に何も割り当てていない場合、静的ストレージ期間を持つ はゼロです。自動または割り当てられたint
ストレージ期間を持つ は、明示的に初期化しない場合、任意の値を持つ可能性があります。
ところで、そのようにヘッダーにオブジェクト宣言を入れると、後で苦労することになります。
nil は、Objective-C オブジェクト ポインター用に予約されている特定の値です。これは NULL (0) に非常に似ていますが、メッセージ パッシングで使用すると意味が異なります。
int のようなローカル プリミティブ データ型は、Objective-C では初期化されません。index の値は、書き込むまで定義されません。
void foo () {
//initialize local variable
int x = 5;
}
//initialise static variable
static int var = 6;