myObject
と呼ばれるオブジェクトへのポインタがあり、それが本当に何かを指しているかどうかを知る必要があるとしましょう。このコードはどのようにできますか?
// assume MyObjectClass *myObject;
return (BOOL)myObject;
112を返しますか?私はいつでも書くことができることを知っています
return (myObject == nil);
そして、すべてがうまくいくでしょう。しかし、今日まで、boolに何かを明示的にキャストすると、常にorが返されるtrue
かfalse
(私が知る限り、0は常にと見なされ、false
その他の値はと見なされますtrue
)、BOOLとそのYES
値NO
は単に「名前が変更された」boolであると常に想定していました。 。つまり、基本的に、私の質問は次のとおりです。
- なぜ112を返すのですか?:-)
- 明示的なキャストの結果はC/Objective-C標準のどこかで定義されていますか、それともコンパイラ固有ですか?