NSMutableArray из NSMutableArrays, проблема addObject - PullRequest
0 голосов
/ 12 августа 2011

Я относительно новичок в Objective-C, и у меня проблема с 2D-NSMutableArray, и это поведение при добавлении содержимого одного NSMutableArray к другому.

У меня есть одноэлементный класс, содержащий NSMutableArray,Этот массив предназначен для хранения значений NSURL.В определенный момент в моей программе мне нужно добавить этот NSMutableArray в целом к ​​другому NSMutableArray.

Я делаю что-то вроде этого: [arrayIWantStuffIn addObject: mySingleton.singletonMutableArray];

ПроблемаУ меня есть то, что мне нужно сбросить мой singltonMutableArray, чтобы начать хранить новый набор значений NSURL.Представленная выше функция addObject, похоже, передает по ссылке, а не по значению, поэтому, когда я делаю:

[mySingleton.singletonMutableArray removeAllObjects];

Данные, хранящиеся в массиве IWantStuffIn, также стираются.

Как получить «глубокий» объект addObject, который добавляет NSMutableArray в другой NSMutableArray по значению, а не по ссылке?

1 Ответ

0 голосов
/ 12 августа 2011

На самом деле вам не нужна глубокая копия, просто еще одна mutableCopy.Это можно сделать, просто выполнив следующие действия:

[arrayIWantStuffIn addObject: [[mySingleton.singletonMutableArray mutablCopy] autorelease]];

После того, как это будет сделано, когда singletonMutableArray очищен или изменен, он не изменит ваши элементы в arrayIWantStuffIn, и вы все равно сможете независимо изменять содержимое.

...