1. ホーム
  2. objective-c

[解決済み] Objective-CのNULLとnilの比較

2022-04-16 21:21:04

質問

observeValueForKeyPath:ofObject:change:context: - なぜ、docsは NULL ではなく nil コンテキストポインタを指定しない場合は?

どのように解決するのですか?

nil の代わりにのみ使用します。 id これは、私たちJavaやC++のプログラマーがオブジェクトへのポインタと考えるものです。使用方法 NULL はオブジェクトでないポインタです。

そのメソッドの宣言を見てください。

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
    change:(NSDictionary *)change context:(void *)context

コンテキストは void * (つまり C スタイルのポインタ) を使うので、間違いなく NULL (と宣言されることもあります)。 (void *)0 よりも、むしろ nil (これは、型が id ).