Objective-CにおけるnilとNILと, nullの違いについて
質問
私は
nil
,
NIL
と
null
.
ググってみたら、こんなのがありました。
nil
-Objective-Cのオブジェクトへのnullポインタです。
NIL
-Objective-CのクラスへのNULLポインタです。
null
-> プリミティブ型へのNULLポインタ、またはデータがない場合
しかし、quot;Objective-C object" と "class" という用語を明確に理解することができません。
このことを説明してください。また、以下のような単語はありますか?
NSNull
または
NSNil
のどちらを使うのでしょうか?もしそうなら、それが何のためにあるのか説明してください。
どのように解決するのですか?
nil
は Objective-C オブジェクトのリテラルな null 値で、抽象的な型に対応する
id
を介して宣言された任意の Objective-C 型に対応します。
@interface
. 例えば
NSString *someString = nil;
NSURL *someURL = nil;
id someObject = nil;
if (anotherObject == nil) // do something
Nil
は Objective-C のクラスの null 値です。
Class
. ほとんどのコードはクラスを参照するための変数を必要としないので、その使用は一般的ではありません。一例を挙げます。
Class someClass = Nil;
Class anotherClass = [NSString class];
NULL
は任意のCポインタに対するリテラルなNULL値です。例えば
int *pointerToInt = NULL;
char *pointerToChar = NULL;
struct TreeNode *rootNode = NULL;
NSNull
は、NULLを表すオブジェクトのクラスです。実際には、オブジェクトは一つしかありません。
+[NSNull null]
. とは異なります。
nil
なぜなら
nil
はリテラルなNULL値、つまりオブジェクトではないからです。の単一のインスタンスは
NSNull
の単一のインスタンスは、一方では、適切なオブジェクトである。
NSNull
を格納することができないため、Foundation コレクションでよく使用されます。
nil
の値を格納することができないためです。ディクショナリーの場合
-objectForKey:
は
nil
を返すことで、与えられたキーに対応するオブジェクトが辞書にないこと、つまり、そのキーが辞書に追加されていないことを示します。もし、あるキーがあるがまだ値がないことを明示したい場合は
[NSNull null]
.
例えば、以下のようにすると例外が投げられます。
nil
の値を格納できないため、例外が発生します。
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:nil forKey:@"someKey"];
一方、次のコードは、以下のように有効です。
[NSNull null]
は非
nil
オブジェクトになります。
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"someKey"];
Foundation コレクションのイニシャライザーが
nil
をオブジェクトのリストの終わりを示すマーカーとして使用する初期化子があります。これが実現できるのは
nil
は Foundation コレクションに格納することができないからに他なりません。例えば
NSArray *array = [NSArray arrayWithObjects:@"one", @"two", nil];
については
NIL
または
NSNil
のようなものがありますが、Objective-CやApple Foundationにはそのようなものはありません。
関連
-
[解決済み] JavaScriptで空文字列/未定義文字列/null文字列をチェックするにはどうすればよいですか?
-
[解決済み] JavaScriptでNULL、未定義、空白の変数をチェックする標準的な関数はありますか?
-
[解決済み] 変数が「未定義」または「NULL」であるかどうかを判断するにはどうすればよいですか?
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] instanceofを呼び出す前にnullチェックは必要ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] Pythonでnullオブジェクトを参照する
-
[解決済み] カラムの変更:NULLをNOT NULLに変更する
-
[解決済み] nullはなぜオブジェクトなのか、nullとundefinedの違いは何ですか?
-
[解決済み] JavaScriptのNullとundefinedのチェックと==と===の違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Objective-CでnilとNULLはいつ使うべきですか?
-
[解決済み] NSLog オーバーライドされた記述方法でのオブジェクトのメモリアドレスの記録
-
[解決済み] switch文の中で変数を宣言する [重複]。
-
[解決済み] NSDictionaryにboolean値を追加するにはどうすればよいですか?
-
[解決済み] 「アプリケーションはアクティブなコントローラを表示しようとした」?
-
[解決済み] UIButtonsの背景色を変更することはできますか?
-
[解決済み] idの意味は?
-
[解決済み] Objective-Cでnilにメッセージを送信する
-
[解決済み] writeToFile:atomically:はデータを上書きするのか?
-
[解決済み] Objective-CのクラスからSwiftの関数を呼び出す