Question

Je suis une erreur comme ça - * Mettre fin à l'application du fait exception uncaught 'NSInvalidArgumentException', raison: ** - [NSCFDictionary initWithObjects: forKeys: nombre:]: tentative d'insérer une valeur nulle à des objets [0] ( clés: recherché)

Alors j'ai essayé le ci-dessous le code

    if (Obj == (id)[NSNull null])  //Obj is an id 
{
    NSLog(@" Obj is (id)[NSNull null]");    
}
else if (Obj == nil)
{
    NSLog(@"Obj is nil");   
} 
else if (Obj == NULL)
{
    NSLog(@"Obj is NULL");  
} 
else
{
    NSLog(@"Obj is something else");
}

searchedDict = [NSDictionary dictionaryWithObject:Obj forKey:@"searched"];

Et je reçu le message NSLog comme « Obj est nul ».

Mais quand je le même code ci-dessus lorsque Obj était NSString et mon application se est terminée en raison de la valeur nulle, je reçu le message NSLog comme «Obj est (id) [NSNull null].

Quelles sont les différences entre zéro, NULL et [NSNULL nil]?

Y at-il différents types de valeurs nulles? Si oui, comment vérifier fréquemment ces valeurs NULL ?

Merci: -)

Était-ce utile?

La solution

NULL est la valeur originale de style C donné à un pointeur qui est considéré comme le point à aucune adresse explicite. Il est généralement juste utilisé pour signifier « unset » ou comme une valeur sentinelle .

char * oldstring = NULL;

nil est la version Objective-C de la même chose appliquée aux références d'objets Obj-C:

NSString * str = nil;
id foo = nil;

Ils sont tous deux défini comme étant égal à la valeur zéro, et bien que vous pourrait les utiliser de façon interchangeable, l'ancien se voit principalement dans les Obj-C pour les pointeurs traditionnels (comme le réglage des pointeurs de contexte void * à NULL ) et nil est utilisé pour toutes les références d'objets Obj-C.

La différence existe parce que même si la syntaxe Obj-C arrive à monter au-dessus de C de la conception de la langue est de niveau supérieur, et ses ID d'objet ne sont pas les mêmes sur le plan conceptuel seulement comme "pointeurs". D'où la création d'une sentinelle spéciale pour eux.

[NSNull null] est un objet

Autres conseils

[NSNull null] est une enveloppe pour la valeur nil que vous souhaitez insérer dans la collection, si elle est ce que vous voulez.

NSNull référence de classe.

Vous pouvez également vérifier avant si une référence d'objet est nil simplement avec ==.

Aussi nil est défini comme suit:. #define nil NULL et est équivalent Objectif C C NULL

Nil est pour les pointeurs d'objet

NULL est pour les pointeurs non

[NSNULL null] est un objet pour représenter « nulle » pour être utilisé dans les cas que les valeurs nulles ne sont pas autorisés (comme des pointes par Vince, comme par exemple dans une collection NSArray et NSDictionary)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top