2009-07-01 6 views
30

Existe-t-il un moyen de modifier la valeur contenue dans un NSNumber après sa création sans faire pointer vers un NSNumber différent?Modification de la valeur d'un NSNumber

 
NSNumber *num = [NSNumber numberWithInt:0]; 
num = [NSNumber numberWithInt: 1]; // now num points to a different object, which I don't want. I want it the same object still, but different value. 

Répondre

41

NSNumber est immuable. En fait, c'est une sous-classe de NSValue, et tous les NSValues ​​sont immuables.

+1

Il est un peu étrange qu'il n'y ait pas NSMutableNumber –

+1

Pas vraiment, typiquement quand vous voudriez un nombre "mutable" vous finissez en utilisant une primitive. NSNumber est plus utile pour la sérialisation, étant une clé de dictionnaire, et les choses dans ce sens. –

+4

@MarcCharbonneau il y a certainement des moments où vous voulez qu'un nombre soit mutable. Je suis tombé sur un ... et j'ai fini par stocker mon numéro dans un NSMutableString à la place (je ne pouvais pas être dérangé en définissant ma propre classe juste pour stocker un entier mutable dans un NSDictionary immuable). –

10

Non, vous ne pouvez pas modifier la valeur de NSNumber. Voir par exemple this post.

Questions connexes