2009-07-01 8 views
30

¿Hay alguna manera de cambiar el valor contenido en un NSNumber después de que se ha creado sin hacer que apunte a un NSNumber diferente?Cambio del valor de 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. 

Respuesta

41

NSNumber es inmutable. En realidad, es una subclase de NSValue, y todos los NSValues ​​son inmutables.

+1

Es un poco extraño que no exista NSMutableNumber –

+1

No realmente, normalmente cuando desea un número "mutable" termina utilizando una primitiva. NSNumber es más útil para la serialización, es una clave de diccionario y cosas en esa línea. –

+4

@MarcCharbonneau definitivamente hay momentos en los que desea que un número sea mutable. Acabo de encontrar uno ... y terminé simplemente almacenando mi número en un NSMutableString (no me podía molestar en definir mi propia clase solo para almacenar un entero mutable en un NSDictionary inmutable). –

10

No, no puede cambiar el valor de NSNumber.

Véase, por ejemplo, this post.