¿Cuál es la diferencia entre copy
y mutableCopy
cuando se utiliza ya sea en NSArray
o en NSMutableArray
?¿Cómo se aplican copy y mutableCopy a NSArray y NSMutableArray?
Esto es lo que yo entiendo; ¿es correcto?
// ** NSArray **
NSArray *myArray_imu = [NSArray arrayWithObjects:@"abc", @"def", nil];
// No copy, increments retain count, result is immutable
NSArray *myArray_imuCopy = [myArray_imu copy];
// Copys object, result is mutable
NSArray *myArray_imuMuta = [myArray_imu mutableCopy];
// Both must be released later
// ** NSMutableArray **
NSMutableArray *myArray_mut = [NSMutableArray arrayWithObjects:@"A", @"B", nil];
// Copys object, result is immutable
NSMutableArray *myArray_mutCopy = [myArray_mut copy];
// Copys object, result is mutable
NSMutableArray *myArray_mutMuta = [myArray_mut mutableCopy];
// Both must be released later
Tiene un error en su edición; seguro si es un error tipográfico o un malentendido. En el primer bloque de código, la variable myArray_imuMuta a la que está asignado desde mutableCopy es * mutable *, no inmutable como indica tu comentario. –
Gracias, que era un error, que se iba a confundirse con Xcode decir "Advertencia NSArray no puede responder a añadir -addObject/-removeObjectAtIndex voy a cambiar a myArray_imuMuta NSMutableArray – fuzzygoat
@JamesHarnett -.. Por favor dejar las modificaciones en el nombre de" Compatibilidad ARC "- vea [este meta post] (http://meta.stackoverflow.com/questions/268309/is-it-okay-to-convert-non-arc-objective-c-answers-to-arc) para Por qué. – Krease