web-dev-qa-db-fra.com

Quelle est la différence entre [Nsnull Null] et Nil?

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?

46
Thanks

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.

81
Mike Caron

Vous ne pouvez pas ajouter une valeur nil à un NSArray ou NSMutableArray. Si vous avez besoin de stocker une valeur nil, vous devez utiliser la classe NSNull wrapper, comme indiqué dans cet extrait que vous avez. Ceci est spécifié dans la documentation .

12
hbw

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.

9
Rose Perrone

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

https://developer.apple.com/library/content/documentation/cocoa/conceptual/numbersandvalues/articles/null.html

0
Suraj K Thomas