いかどうかをテストがプリミティブにObjective-Cはnil?
-
23-08-2019 - |
質問
になっているチェックのiPhoneアプリケーション-
int var;
if (var != nil)
ですが、X-このコードは発生の警告"との比較のポインタと整数です。" どうしたらいいですか?
によってさらに広がるドキュメンテーションシステムでは、またまた、上記の計算書いたのがcompliation.
解決
プリミティブできません nil
. nil
予約のためのポインタをオブジェクト。 nil
技術的にポインタ型、および混合ポケットの整数ではなくキャストはほとんど常にコンパイラの警告を、ひとつの例外:で完全にokを暗黙的に変換する整数の0ポインタなしのキャスト製。
したい場合は区別0しない"という価値"を使用 NSNumber
クラス:
NSNumber *num = [NSNumber numberWithInt:0];
if(num == nil) // compare against nil
; // do one thing
else if([num intValue] == 0) // compare against 0
; // do another thing
他のヒント
if (var) {
...
}
歓迎の素晴らしい世界へのC.任意の値と等しくないの整数は0またはnullポインタはtrueです。
って対応いたしますが、バグ:int値。nullは不可。彼らは価値の種類のようにJava.
したい場合は"箱"の整数、そして必要なものをお願いし、そのアドレス:
int can_never_be_null = 42; // int in Java
int *can_be_null = &can_never_be_null; // Integer in Java
*can_be_null = 0; // Integer.set or whatever
can_be_null = 0; // This is setting "the box" to null,
// NOT setting the integer value
所属していません StackOverflow