Я немного запутался в том, как копирование объектов работает в Objective C. Вот что я знаю: когда вы копируете объект, вы получаете в память отдельный объект, который содержит все те же элементы из объекта, который вы только что скопировалии увеличивает счетчик хранения для каждого элемента.Кроме того, копирование каждого элемента объекта массива из оригинала в новое место означало просто копирование ссылки из одного элемента массива в другой.Итак, старое и новое указывают на один и тот же элемент.
Посмотрите на приведенный ниже код: почему при удалении объекта он влияет только на один объект, а при изменении элемента - как наоригинал и копия объекта?Разве удаление не затрагивает оба объекта?
NSMutableArray *dataArray = [NSMutableArray arrayWithObjects:
[NSMutableString stringWithString:@"one"],
[NSMutableString stringWithString:@"two"],
[NSMutableString stringWithString:@"three"], nil];
NSMutableArray *dataArray2;
NSMutableString *mStr;
NSLog(@"1-dataArray: ");
for( NSString *elem in dataArray)
NSLog(@" %@", elem);
dataArray2 = [dataArray mutableCopy];
[dataArray2 removeObjectAtIndex:0];
NSLog(@"2-dataArray2: ");
for( NSString *elem in dataArray2)
NSLog(@" %@", elem);
mStr =[dataArray objectAtIndex:1];
[mStr appendString:@"ONE"];
NSLog(@"3-dataArray: ");
for( NSString *elem in dataArray)
NSLog(@" %@", elem);
NSLog(@"4-dataArray2: ");
for( NSString *elem in dataArray2)
NSLog(@" %@", elem);
[dataArray2 release];