Является ли этот код неправильным для управления памятью? (re NSMutableArray addObject) - PullRequest
0 голосов
/ 24 мая 2011

Хотя у меня нет проблем ANALYZE с моим кодом iPhone, когда я запускаю Instruments в поисках утечек памяти, я, похоже, вижу много. Один в основном как пользовательский класс, который я использую, скажем, MyCustomClass. Инструменты в основном говорит:

Сводка инструментов по утечкам блоков - история

  • Malloc - когда я его создаю
  • Autorelease - который я делаю на том же, что и alloc
  • Сохранить - кажется, где я добавляю это в NSMutableArray где-то еще
  • Релиз - но от GrahicServices - GSEventRunModal (это не я ...)

Я уже автоматически выпустил объект, поэтому мне интересно, есть ли проблема в способе, которым я добавил его в NSMutableArray через addObject

ВОПРОСЫ - Мой общий вопрос заключается в том, есть ли при выполнении «addObject» для NSMutableArray для объекта, который автоматически высвобождается, какие-либо конкретные шаги, которые код, который должен получить массив, должен выполнить при завершении? Возможно, это тот случай, когда даже через мой объект автоматически высвобождается добавление его в массив, поэтому, возможно, когда я заканчиваю работу с NSMutableArray, мне нужно вручную перебрать все объекты в массиве и освободить их?

спасибо

1 Ответ

2 голосов
/ 24 мая 2011

Если вы вызвали autorelease для всех объектов, которые вы добавили в ваш массив, вам не нужно выполнять никаких дополнительных действий с точки зрения управления памятью. NSMutableArray будет управлять состоянием в памяти объектов, которые к нему добавляются (как при сохранении их при добавлении, так и при освобождении их, когда объект удаляется из массива, либо путем явного освобождения его, либо когда массив освобождается) , Все, что вам нужно сделать, это убедиться, что вы освободили массив, когда закончите с ним.

...