2009-08-28 21 views

Respuesta

113

NSMutableArray (y todas las demás clases con Mutable en el nombre) se pueden modificar. Por lo tanto, si crea un simple NSArray, no puede cambiar su contenido más tarde (sin volver a crearlo). Pero si crea un NSMutableArray, puede cambiarlo; notará que tiene métodos como -addObject: y -insertObject:atIndex:.

Consulte the documentation para obtener más detalles.

4

Los tipos "mutables" son clases que se pueden cambiar después de que se han inicializado, como NSMutableString frente a NSString.

+1

'NSMutableString' se deriva de' NSString'. En consecuencia, no puede confiar en que un '' NSString * ''' que recibe del exterior sea inmutable. Solo puede suponer que 'NSMutableString *' es mutable. 'NSString *' puede ser mutable o inmutable. Es por eso que es posible que desee llamar a '[str copy]' cuando la instancia se asigna a alguna propiedad de su clase. –

+0

No puede cambiar un NSString una vez que está construido. Ver http://stackoverflow.com/questions/905396/the-final-word-on-nsstrings-mutable-and-immutable. En cuanto a por qué usa copy, vea http://stackoverflow.com/questions/387959/nsstring-property-copy-or-retain –

+1

Shaggy: No puede cambiar una * instancia * de la clase 'NSString'. Este no es el problema. El problema es que un "' NSString * '" no apunta necesariamente a una instancia de la clase 'NSString'. También puede apuntar a instancias de clases derivadas de 'NSString', como' NSMutableString'. Por lo tanto, no puede confiar en que 'NSString *' que recibió del mundo exterior sea inmutable. –

0

NSArray: en NSArray no podemos cambiar el índice .... Significa reparar el conjunto.

NSMutableArray: en NSMutableArray podemos cambiar el índice y también añadir el valor en orden en tiempo de ejecución ..