0

重複の可能性:
nilにメッセージを送信しますか?

への参照がNSMutableArrayオブジェクトをまったく指していない場合、インスタンス化されたものがないため、実行時エラーなしでインスタンスメソッドを呼び出すことができるのはなぜですか?

NSMutableArray *foo = nil;
NSLog(@"[null count] is %i", [foo count]);

NSLog(@"[null count] again is %i", [(NSMutableArray *) nil count]);

上記の行は両方とも0、不正なメモリアクセスを引き起こしたり、インスタンスがないことを示すエラーを引き起こしたりする代わりに出力されます。

4

1 に答える 1

1

Objective-Cプログラミング言語 から直接: Objective-Cでは、メッセージをnilに送信することは有効です。実行時に効果がないだけです。

もう少し読んでみると、なぜ[nil count]が戻るのかがわかります0

于 2012-04-30T06:56:22.023 に答える