Deca-pod.jp

Anything

if (somePerson != nil)って?

スカラ変数は宣言時に初期化するのがよい習慣です。そうでないと、スタック領域にたまたま残って
いた「ごみ」の値になってしまいます。

BOOL answer =NO;

int magicnumber = 10;

オブジェクトを指すポインタについては、これは必要ありません。初期値を指定しなければ、コンパ イラが自動的に、nilに初期化するからです。

XYZperson * person;
//personの値は自動的にnilになる


nil値は、特定の値を与えないオブジェクトの初期値として最も安全です。Objective-Cでは、nilに対 してメッセージを送信することは、まったく正当な処理だからです。nilにメッセージを送信しても、 当然ながら何も起こりません。
注意: nilにメッセージを送信してその戻り値を取得すると、その型がオブジェクトであれ ばnil、数値型であれば0、BOOL型であればNOとなります。

あるオブジェクトがnilでないこと(メモリ上のあるオブジェクトを指していること)を確認したい 場合、2つの方法があります。ひとつはCの非等価演算子を使う方法です。

if(person != nil){
//personはオブジェクトを指している

}

単にその変数を条件式として記述してしまうという方法もあります。

if(person){
//personはオブジェクトを指している

}

変数somePersonの値がnilであれば、条件式としての値は0(false)となります。アドレスであれば 0ではないので、条件式としての値はtrueになります。

APPLE公式ドキュメントobjective-cによるプログラミングより


条件式に変数が書いてあるのをみてそれってなんなのって思っていたけどよくわかりました。
こういったネタを重ねていけば良いプログラムが書けるようになるのかな。