[解決済み] Objective-Cのnil、NIL、nullの違いについて
質問
との違いを知りたい。
nil
,
NIL
と
null
.
ググってみたら、こんなのがありました。
nil
-Objective-CオブジェクトへのNULLポインタ
NIL
-Objective-CクラスへのNULLポインタ
null
-> プリミティブ型へのヌルポインタ、またはデータがない場合
しかし、Objective-Cのオブジェクトとクラスという用語がよく理解できないのですが。
解説をお願いします。また、以下のような単語はありますか?
NSNull
または
NSNil
Objective-Cでは?もしそうなら、それは何のためにあるのか説明してください。
どのように解決するのですか?
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を表すオブジェクトのクラスです。実際には、オブジェクトは1つしかありません。
+[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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Xcodeのビルド失敗 "アーキテクチャx86_64の未定義シンボル"
-
[解決済み] どのような場合に@synthesizeを明示的に使用する必要がありますか?
-
[解決済み] arc4randomとarc4random_uniformの違いは何ですか?重複
-
[解決済み] Objective-CでNSNumberをintに変換する。
-
[解決済み] ターゲット・パターンに '%' が含まれていません。メイクファイル
-
[解決済み】NSArrayをアルファベット順に並べるには?
-
[解決済み】Windows版Objective-C
-
[解決済み】UITableViewからセパレータラインを削除する方法はありますか?
-
[解決済み】なぜObjective-Cのファイルには.mという拡張子がついているのですか?
-
[解決済み] Objective-CでnilとNULLはいつ使うべきですか?