2010-10-15 1 views

Répondre

11

Il est possible, mais il est incorrect:

warning: initialization makes pointer from integer without a cast 

Un id est un pointeur vers un objet, pas un entier.

  • Avez-vous l'intention d'utiliser l'objet disponible à l'adresse 9? Vous ne serez probablement pas autorisé à le faire.
  • Voulez-vous simplement utiliser un conteneur id pour porter un nombre entier? Vous devriez plutôt utiliser NSNumber.
  • Pensez-vous que l'affectation créera un objet contenant 9? Cela ne fonctionne pas comme ça.
42

9 est un littéral entier, qui n'est pas un objet. id est un pointeur vers un objet. Si vous devez passer un entier comme un objet (type id), vous devez l'envelopper dans un objet NSNumber comme ceci:

id var = [NSNumber numberWithInteger: 9]; 
2

id var = @9; fonctionne aussi. @9 est équivalent à [NSNumber numberWithInt:9]

Questions connexes