Что я заметил, так это то, что с автоматически высвобождаемыми объектами, под давлением памяти, существует системный ГХ, который происходит с заметным падением производительности, если вы не освобождаете свои пулы своевременно.
Кроме того, использование метода init / release позволяет потреблению памяти в циклах оставаться постоянным, в то время как использование пула автоматического выпуска создает пики. В некоторых случаях, когда возникают проблемы с памятью, быстрое увеличение объектов в пуле автоматического выпуска может привести к загрузке приложения до того, как система предпримет шаги по очистке таких элементов, как открытые электронные письма, вкладки мобильного сафари и запущенные элементы iTunes.
Суть в том, что я склонен чаще использовать init, потому что это делает потребление памяти моим приложением более стабильным, и я вижу меньше проблем с случайной загрузкой. Постепенное увеличение потребления памяти позволяет демонам очистить систему, не убивая мое приложение. Наконец, если вы используете ключевое слово @property в своих классах, вы должны быть осторожны с такими вещами, как:
myProperty = [NSMutableArray arrayWithCapacity:10];
Поскольку произойдет, когда пул в вашем классе main.m будет собран, этот элемент исчезнет, что приведет к падению из-за вызова метода для освобожденного объекта. Если вы устанавливаете его с помощью @property (nonatomic, retain), вы можете использовать:
self.myProperty = [NSMutableArray arrayWithCapacity:10];
чтобы убедиться, что оно висит. Однако вы можете избежать всего этого, просто перейдя к alloc init. Просто просмотрите количество ссылок, чтобы убедиться, что у вас нет двойных ссылок, вызывающих утечку памяти.