Voici un contexte où j'ai vu que:
NSMutableArray *controllers = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < kNumberOfPages; i++) {
[controllers addObject:[NSNull null]];
}
pourquoi pas nul dans cet endroit?
Directement de - Apple :
La classe NSnull définit un objet Singleton que vous utilisez pour représenter des valeurs nulles dans des situations où NIL est interdite comme une valeur (généralement dans un objet de collecte tel qu'un tableau ou un dictionnaire).
Donc, dans votre exemple, c'est exactement ce qui se passe, le programmeur choisit de mettre un objet NULL dans le tableau des contrôleurs, où NIL n'est pas autorisé comme une valeur.
Les classes de collecte comme NSArray
et NSDictionary
ne peuvent pas contenir nil
valeurs. NSNULL
a été créé spécifiquement comme un espace réservé pour nil
. Il peut être mis dans des classes de collecte et ne prend que de la place.
NSNull
définit un objet singleton, ce qui signifie qu'il n'y a qu'une seule instance de Nsnull (que vous créez à l'aide de [NSNull null]
), mais il peut être utilisé dans autant d'endroits que vous le souhaitez.
La classe NSnull définit un objet singleton que vous utilisez pour représenter des valeurs nulles dans des situations où NIL est interdite comme une valeur (généralement dans un objet de collecte tel qu'un tableau ou un dictionnaire).
Vous ne pouvez pas ajouter une valeur nulle à un Nsarray ou NsmutableArray. Si vous devez stocker une valeur nul, vous devez utiliser la classe Wrapper Nsnull.
Les classes de collecte comme Nsarray et NSDictionary ne peuvent pas contenir de valeurs nulles. Nsnull a été créé spécifiquement comme un espace réservé pour NIL. Il peut être mis dans des classes de collecte et ne prend que de la place.
Voir le lien pour référence