2012-05-10 2 views
0

Привет, у меня есть массив, который я пытаюсь скопировать, а затем удалить элемент из. Проблема в том, что я думаю, что я удаляю элемент из копии, но он также удаляет элемент из исходного массива. Я понятия не имею, что происходит. Я новичок в объективе c, поэтому любая помощь будет высоко оценена.Объектив c массивы связаны каким-то образом

NSArray *newarray = appDelegate.orginalArray; 

[newarray removeObjectAtIndex: 2]; 

Когда я смотрю на массивах после удаления объекта он снял его с обоих newarray и orginalArray почему бы это было?

Большое спасибо

ответ

2

Это не делает копию. Оба newArray и appDelegate.originalArray относятся к одному и тому же объекту. Вы должны были бы сделать это:

NSMutableArray *newArray = [appDelegate.originalArray mutableCopy]; 

Также обратите внимание, что я использую NSMutableArray и mutableCopy обеспечить копию изменчиво (т.е. поддерживает добавление и удаление элементов)

0

Указатели, приятель, и изменяемые/неизменны абстракции. newarray и appDelegate.originalArray - оба указателя (ссылки) на тот же неизменяемый (неизменный) массив. Вы хотите:

NSArray *newarray = [appDelegate.orginalArray mutableCopy]; 
Смежные вопросы