回答:
nilidJavaとC ++プログラマーがオブジェクトへのポインターとして考えるものの代わりにのみ使用する必要があります。NULL非オブジェクトポインターに使用します。
そのメソッドの宣言を見てください。
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
change:(NSDictionary *)change context:(void *)context
コンテキストはvoid *(つまり、Cスタイルのポインター)なので、(型である)ではなく(NULLとして宣言されることもあります)を使用することをお勧めします。(void *)0nilid
contextでobserveValueForKeyPath:ofObject:change:context:あるvoid *として、データが渡されていないことを平均することをcontextオブジェクトポインタだろうか?それはよくあることだと思います。それが、ドキュメントがのNULL代わりに常に使用される理由について私が混乱している理由ですnil。
技術的には同じもの(0)ですが、Objective-Cオブジェクトタイプには通常nilが使用され、cスタイルのポインタ(void *)にはNULLが使用されます。
NULLあるC equivalentのは、nil何へのポインタ。
ここでnil is zero typed as id、
NULL is zero typed as void*。
NULLにメッセージを送信できない重要な点の1つ。そのため、多くの場所で、objective-Cでnilを使用することをお勧めします。