Voici un contexte où j'ai vu cela:
NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < kNumberOfPages; i++) {
[controllers addObject:[NSNull null]];
}
pourquoi ne pas rien à cet endroit?
Voici un contexte où j'ai vu cela:
NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < kNumberOfPages; i++) {
[controllers addObject:[NSNull null]];
}
pourquoi ne pas rien à cet endroit?
Directement à partir de Apple: "La NSNull classe définit un objet singleton vous utiliser pour représenter les valeurs null dans les situations où le nil est interdit en tant que valeur (généralement dans un objet de collection comme un tableau ou un dictionnaire)."
Donc dans votre exemple, c'est exactement ce qui se passe, le programmeur est de choisir de placer un objet null dans les contrôleurs de tableau, où nul n'est pas autorisé en tant que valeur.
Vous ne pouvez pas ajouter une valeur nil
à un NSArray
ou NSMutableArray
. Si vous devez stocker une valeur nil
, vous devez utiliser la classe wrapper NSNull
, comme indiqué dans l'extrait que vous avez. Ceci est spécifié dans la documentation .
Nous sommes tous d'accord que [NSNull null] est utile comme un espace réservé où un objet est requis, comme indiqué ci-dessus. Mais sauf si c'est explicitement utilisé dans la cession de votre objet, il ne doit pas être utilisé à titre de comparaison, une erreur que j'ai fait dans le passé.
id a;
NSLog(@"Case 1");
if (a == nil) NSLog(@"a == nil");
if (a == Nil) NSLog(@"a == Nil");
if ([a isEqual:[NSNull null]]) NSLog(@"a isEqual:[NSNull null]");
NSLog(@"Case 2");
a = [NSNull null];
if (a == nil) NSLog(@"a == nil");
if (a == Nil) NSLog(@"a == Nil");
if ([a isEqual:[NSNull null]]) NSLog(@"a isEqual:[NSNull null]");
Sortie:
2014-01-31 10:57:11.179 MCDocsApp[13266:a0b] Cas 1
2014-01-31 10:57:11.179 MCDocsApp[13266:a0b] a == nil
2014-01-31 10:57:11.179 MCDocsApp[13266:a0b] a == Nil
2014-01-31 10:57:11.180 MCDocsApp[13266:a0b] Cas 2
2014-01-31 10:57:11.180 MCDocsApp[13266:a0b] un isEqual:[NSNull null]
La collecte des classes comme l' NSArray
et NSDictionary
ne peut pas contenir de nil
valeurs. NSNULL
a été créé spécifiquement pour l'espace réservé nil
. Il peut être mis en classes de collection, et seulement prend de la place.
NSNull
définit un objet singleton, ce qui signifie qu'il n'y a jamais qu'une seule instance de NSNull (que vous créez à l'aide d' [NSNull null]
), mais il peut être utilisé dans autant d'endroits que vous souhaitez.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.