50

これが私が見たコンテキストです:

NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < kNumberOfPages; i++) {
    [controllers addObject:[NSNull null]];
}

なぜその場所でゼロにしないのですか?

4

6 に答える 6

86

Appleから直接:

NSNullクラスは、nilが値として禁止されている状況(通常は配列やディクショナリなどのコレクションオブジェクト)でnull値を表すために使用するシングルトンオブジェクトを定義します。

したがって、あなたの例では、まさにそれが起こっているのです。プログラマーは、nullオブジェクトをコントローラー配列に配置することを選択しています。nilは値として許可されていません。

于 2009-05-07T19:43:34.537 に答える
14

またはにnil値を追加することはできません。値を格納する必要がある場合は、そのスニペットに示されているように、ラッパークラスを使用する必要があります。これはドキュメントで指定されています。NSArrayNSMutableArraynilNSNull

于 2009-05-07T19:46:07.653 に答える
9

コレクション クラスはNSArray、値NSDictionaryを含むことができません。のプレースホルダとして特別に作成されましたコレクション クラスに入れることができ、場所を取るだけです。nilNSNULLnil

NSNullシングルトン オブジェクトを定義します。つまり、NSNull ( を使用して作成[NSNull null]) のインスタンスは 1 つしか存在しませんが、好きなだけ多くの場所で使用できます。

于 2010-07-03T05:03:09.073 に答える
0

NSNull クラスは、nil が値として禁止されている状況 (通常は、配列や辞書などのコレクション オブジェクト) で null 値を表すために使用するシングルトン オブジェクトを定義します。

NSArray または NSMutableArray に nil 値を追加することはできません。nil 値を格納する必要がある場合は、NSNull ラッパー クラスを使用する必要があります。

NSArray や NSDictionary などのコレクション クラスに nil 値を含めることはできません。NSNULL は、特に nil のプレースホルダーとして作成されました。コレクションクラスに入れることができ、場所を取るだけです。

参考までにリンク先をご覧ください

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/NumbersandValues/Articles/Null.html

于 2018-03-15T11:44:37.263 に答える
-14

nilは、オブジェクトの配列の後の配列の終わりを示します。

于 2010-08-12T15:04:14.650 に答える