Как правильно очистить NSMutableArray - PullRequest
8 голосов
/ 19 июня 2011

Я пытаюсь очистить NSMutableArray с помощью [myarray removeallobjects];но я получаю ошибку exc_bad_access.Это правильный способ очистить массив?Я пытался установить его на ноль, но он тоже не работает.На самом деле я делаю заполнение массива данными, и у пользователя есть возможность «обновить» данные, и я хочу очистить массив перед тем, как вводить обновленные данные.Я не могу опубликовать любой код, потому что он слишком большой.

Ответы [ 3 ]

61 голосов
/ 19 июня 2011

-[NSMutableArray removeAllObjects] - правильный способ опорожнения NSMutableArray. Скорее всего, у вас происходит сбой, потому что вы все еще используете объекты, которые вы удалили где-то, возможно, в вашем пользовательском интерфейсе.

1 голос
/ 19 июня 2011

Я думаю, что проблема в этом фрагменте кода, который вы предоставили в комментариях,

[checkinArray addObject:checkinsA]; 
[checkinsA.taggedID release];
[checkinsA.taggedName release]; 
[checkinsA release]; 

taggedID и taggedName являются свойствами объекта checkinsA. Их следует освобождать только методом dealloc Массив не сохраняет дерево объектов. Сохраняет только корневой объект. Так что здесь не должно быть релиза. Так что выбейте две линии посередине и сделайте это

[checkinArray addObject:checkinsA]; 
[checkinsA release]; 
0 голосов
/ 19 июня 2011

У вас происходит сбой, потому что ваш массив больше не существует в памяти.

Бьюсь об заклад, это потому, что вы забыли сохранить его (или выпустили слишком рано)

Вы, вероятно, создали его, используя [NSMutableArray array] или arrayWithObjects: или некоторые из этих вариантов, или назвали autorelease после вашего alloc + init, тогда как если это переменная экземпляра, вы должны сохранять ее до объекта islocloc'd.

Обратите внимание, что mgmt памяти является ключевой частью разработки iOS. Перед тем, как идти дальше, убедитесь, что вы прекрасно его знаете (например, когда он станет естественным, и вы не будете сомневаться, когда его оставить, а когда отпустить). Это поможет вам избежать таких проблем, как только вы правильно его используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...