2011-02-15 3 views
2

Pourquoi dict2 affiche-t-il un avertissement indiquant que son objet n'est pas un pointeur lorsque dict1 ne montre aucun avertissement de ce type?cacao objectif-c NSDictionary avec objets entiers

Les deux ne devraient-ils pas afficher cet avertissement? les deux sont des nombres entiers.

erg.

NSDictionary *dict1 = [NSDictionary dictionaryWithObject:0 forKey:TAG_KEY]; 
NSDictionary *dict2 = [NSDictionary dictionaryWithObject:1 forKey:TAG_KEY]; 

Répondre

5

De toute évidence, ints ne sont pas des objets - mais 0 dans un contexte de pointeur est interprété comme nil/NULL. En fait, c'est exactement comme cela que le néant est défini. De objc.h:

#define Nil 0   /* id of Nil class */ 
#define nil 0   /* id of Nil instance */ 
0

Vous pouvez utiliser la classe NSNumber si vous voulez des entiers dans le dictionnaire.

+0

cela ne répond pas à la question monsieur! – binnyb

+0

@binnyb: la question posée a été correctement répondue par Chuck. Je signale simplement que ce que vous faites est TRÈS FAUX - les entiers n'appartiennent pas à NSDictionary. NSDictionary va essayer de leur faire des choses d'objet - conserver/libérer, par exemple. Ce qui causera beaucoup de chagrin. Il existe cependant une solution de contournement: les entiers peuvent être enveloppés dans un type d'objet appelé NSNumber. –

Questions connexes