2009-08-28 22 views

risposta

113

NSMutableArray (e tutte le altre classi con Mutable nel nome) possono essere modificati. Quindi, se si crea un semplice NSArray, non è possibile modificarne il contenuto in seguito (senza ricrearlo). Ma se si crea un NSMutableArray, è possibile modificarlo - noterete che ha metodi come -addObject: e -insertObject:atIndex:.

Vedere the documentation per dettagli.

4

I tipi "mutabili" sono classi che possono essere modificate dopo l'inizializzazione, ad esempio NSMutableString rispetto a NSString.

+1

'NSMutableString' è derivato da' NSString'. Di conseguenza, non puoi fare affidamento su un "NSString *" che ricevi dall'esterno per essere immutabile. Puoi solo supporre che 'NSMutableString *' sia mutabile. 'NSString *' può essere mutevole o immutabile. Ecco perché potresti voler chiamare '[str copy]' quando l'istanza è assegnata ad alcune proprietà nella tua classe. –

+0

Non è possibile modificare una NSString una volta creata. Vedi http://stackoverflow.com/questions/905396/the-final-word-on-nsstrings-mutable-and-immutable. Per quanto riguarda il motivo per cui utilizzi la copia, consulta http://stackoverflow.com/questions/387959/nsstring-property-copy-or-retain –

+1

Shaggy: non puoi modificare un'istanza * * della classe 'NSString'. Questo non è il problema. Il problema è che "NSString *" non punta necessariamente su un'istanza della classe 'NSString'. Può anche puntare a istanze di classi derivate da 'NSString', come' NSMutableString'. Pertanto, non puoi fare affidamento su un 'NSString *' che hai ricevuto dal mondo esterno per essere immutabile. –

0

NSArray: in NSArray non possiamo cambiare l'indice .... Mezzi correzione array.

NSMutableArray: in NSMutableArray possiamo cambiare indice e anche aggiungere il valore in ordine a run-time ..