Удаление элементов NSMutableArray - PullRequest
0 голосов
/ 20 января 2011

Я пытался исправить ошибку очень долго, и я мог бы сделать с некоторыми предложениями.У меня есть два NSMutableArrays tem и list.list является arrayWithArrays, поэтому каждый раз, когда я загружаю данные в tem после окончания, я говорю [list addObject: tem]; Мой код таков, что перед добавлением нового набора данных в tem я удаляю все его элементы и начинаюэлементы снова.Однако удаление элементов из tem приводит к их удалению и из list.Что я могу сделать, чтобы избежать удаления из list?

1 Ответ

1 голос
/ 20 января 2011

Не уверен, что вы подразумеваете под "списком" - это массив с массивами - если он предназначен для стандартного метода, он неправильный - поэтому вы должны уточнить это. Но ответ на то, что я думаю - это ваш вопрос:

addObject добавляет сам объект, то есть просто указатель на ваш массив tem. Оба указателя по-прежнему ссылаются на один и тот же экземпляр NSArray, поэтому все, что вы делаете через один, также будет видно через другой. Если это вас смущает, вы должны прочитать по указателям .

Если вы действительно хотите, чтобы объекты в list были сгруппированы во внутреннем массиве, подобном tem, вы должны каждый раз создавать новый массив tem:

[list addObject:tem];
tem = [NSMutableArray arrayWithCapacity:1];
// new stuff added to tem will not appear in the array inside list

(Будьте осторожны с владением объектом здесь - в этом примере используется удобный метод, который автоматически высвобождает tem, но вам может потребоваться retain и release соответственно.)

Если, с другой стороны, вы хотите, чтобы объекты внутри tem были добавлены в list, используйте addObjectsFromArray:

[list addObjectsFromArray:tem];
// objects in list will not be affected by subsequent changes to tem
[tem removeAllObjects];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...