В чем разница между copy
и mutableCopy
при использовании на NSArray
или NSMutableArray
?Как скопировать и mutableCopy применить к NSArray и NSMutableArray?
Это мое понимание; это правильно?
// ** 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
У вас есть ошибка в вашем редактировании; уверен, что это опечатка или недоразумение. В первом блоке кода переменная myArray_imuMuta, назначенная с помощью mutableCopy, * mutable *, не является неизменной, как указывает ваш комментарий. –
Спасибо, это была ошибка, я запутался в Xcode, сказав: «Предупреждение NSArray может не отвечать на add -addObject/-removeObjectAtIndex. Я изменю myArray_imuMuta на NSMutableArray. – fuzzygoat
@JamesHarnett - пожалуйста, прекратите редактирование на имя" Совместимость с ARC "- см. [Этот мета-пост] (http://meta.stackoverflow.com/questions/268309/is-it-okay-to-convert-non-arc-objective-c-answers-to-arc) для почему. – Krease