Поскольку в начале я объявлял все свои массивы с помощью alloc, и если в конце определенной функции я возвращал массив, созданный с помощью alloc, мне пришлось автоматически высвобождать этот массив из-за проблем с утечкой памяти.Теперь, используя первое объявление, мне не нужно ничего выдавать
Это совершенно правильно, когда вы "продаете" объект.Но в других случаях, когда вы создаете объект на iOS, где у вас есть выбор между получением готового автоматически выпущенного объекта и вызовом alloc с последующим выпуском, Apple хочет, чтобы вы использовали alloc и release, потому что это сохраняет время жизни объектаshort и под вашим контролем.
Проблема здесь в том, что автоматически выпущенные объекты живут в пуле авто-выпуска и могут накапливаться до тех пор, пока пул не будет осушен, когда бы это ни было.для это петли.Вы можете генерировать автоматически выпущенные объекты, даже не подозревая об этом, и они просто накапливаются в пуле.Решение состоит в том, чтобы создать собственный пул автоматического выпуска в начале цикла и освободить его в конце цикла, чтобы объекты освобождались каждый раз через цикл.
РЕДАКТИРОВАТЬ - 12 /18/2011: Но с iOS 5 и появлением ARC механизм автоматического выпуска гораздо более эффективен, и нет такой вещи, как release
, поэтому различие между alloc-init и вспомогательным конструктором, торгующим автоматически выпущеннымобъект становится спорным.(Также теперь это блок @autoreleasepool
, а не объект пула автоматического выпуска (псевдо).)