この質問の 2 つの部分
1) 何が起こっているかについてのこの理解は正しいですか?
「if (obj)」は、ポインターが 0x0 ではないかどうかをテストしています。つまり、整数メモリ アドレスに設定されています
。「if (obj != nil)」は、オブジェクトのメモリ アドレスをユニバーサル nil オブジェクトのメモリ アドレスと比較しています。
2) したがって、変数が何かを指しているかどうかがわからない状況では、もしそうであれば、そのオブジェクトが有効なオブジェクトか nil かどうかもわかりません。objにメッセージを渡すだけでなく、その情報に基づいてさまざまなことをしたいのですが、nilであれば安全だと思います。このコードは正しく、必要ですか?
if (obj && obj != nil) {
// Do a bunch of things that should only happen if obj is pointing to a valid object
[obj someMessage];
[anotherObj someOtherMessage];
}
みんなありがとう!