私はこれを見てきました:これは何ですか(NSNull *)コントローラ== [NSNull null]する必要がありますか?コントローラ== nilだけではないのはなぜですか?アップルの例では
myController *controller = [viewControllers objectAtIndex:page];
if ((NSNull *)controller == [NSNull null]) {
controller = [[myController alloc] initWithPageNumber:page];
[viewControllers replaceObjectAtIndex:page withObject:controller];
[controller release];
}
私はこのラインで非常に興味があります:私はそれをやっているだろう場合は、私はちょうどゼロのためにチェックしているだろう
if ((NSNull *)controller == [NSNull null]) {
。なぜ彼らはそれほど複雑なことをするのだろうか?それは実際に何をしているのですか?私にとっては、コントローラオブジェクトをNSNullにキャストしているように見え、それがNSNullからのnullと同じかどうかを確認します。
A.F.A.I.K. nilは "no object"を意味し、nullは "nothing"を意味します。私はここで明確な画像を取得するのを手伝ってください!
ありがとうございました。だから(NSNull *)コントローラはNSNullにコントローラをキャストしていますか?私は、isKindOfClass演算子などがあると考えました。 – Thanks
ポインタの比較を行うのは、isKindOfClassを呼び出すよりも(実行時に)迅速ですが、[controller isEqual:[NSNull null]]と同じように動作するはずです。 コントローラが 'id'であると宣言した場合、コンパイラの警告を避けるためにキャストは必要ありません。 –