Un NSNumber dans le xib

Philippe49Philippe49 Membre
03:54 modifié dans API AppKit #1
On peut prendre un NSObject (cube bleu) et lui attribuer la classe NSNumber. On peut faire de cet objet un IBOutlet. Mais quand on le fait décrire par le possesseur de l'IBOutlet, on obtient (null) , ce qui veut dire que le NSNumber n'est pas instancié. Quoi en penser ? Peut-on vraiment créer n'importe quel objet lors du désarchivage du xib ? 

Réponses

  • CéroceCéroce Membre, Modérateur
    03:54 modifié #2
    Le problème ne serait-il pas plutôt que le NSNumber n'est pas initialisé ?
    Ni NSNumber, ni NSValue ne réimplémentent la méthode -(id)init.
  • Philippe49Philippe49 Membre
    mai 2009 modifié #3
    Effectivement, en encapsulant un NSNumber dans une classe MyNumber, et en fournissant donc la méthode -(id) init, cela marche. On n'y gagne rien du tout. Merci pour l'explication.
  • CéroceCéroce Membre, Modérateur
    03:54 modifié #4
    J'ai essayé ce code:

    <br />	NSNumber* number = [[NSNumber alloc] init];<br />	NSLog(@&quot;number = %p&quot;, number);<br />	<br />	NSNumber* value = [[NSValue alloc] init];<br />	NSLog(@&quot;value = %p&quot;, value);<br />
    


    number et value sont tous les deux nil.

    Je pense qu'Apple a réimplémenté la méthode -init de NSValue pour qu'elle renvoie nil. Le but est de permettre aux développeurs qui n'appelleraient pas une méthode init valide de s'en rendre compte rapidement.
  • Philippe49Philippe49 Membre
    mai 2009 modifié #5
    Merci pour l'essai, c'est clair.

    Pour ce qui concerne l'introduction d'un NSNumber dans le xib, la méthode de remplacement que j'ai trouvée consiste à  mettre un objet en lui attribuant la classe NSMutableDictionary, et d'utiliser une clé number pour faire les bindings. Evidemment reste la solution classique de stocker le number comme variable d'instance d'un des autres objets du xib ...
  • psychoh13psychoh13 Mothership Developer Membre
    03:54 modifié #6
    Euh personnellement je ne vois pas l'intérêt d'utiliser une instance de NSNumber ou NSValue dans un XIB, il s'agit d'objet non-modifiable, alors quel intérêt de les faire instancier par un XIB ?
  • Philippe49Philippe49 Membre
    03:54 modifié #7
    Oui, le caractère non modifiable est une deuxième raison pour laquelle si on veux stocker un nombre ou toute autre "value", il ne faut pas utiliser un NSNumber ou un NSValue  :)
Connectez-vous ou Inscrivez-vous pour répondre.