Когда используется авто-релиз, когда он на самом деле выпущен? - PullRequest
1 голос
/ 31 октября 2010

Иногда я задаюсь вопросом, когда что-то становится автоматически выпущенным.Я добавил NSLog в пакет различных объектов, но не смог найти ничего полезного.

Когда что-то высвобождается при использовании авто-выпуска?Это непредсказуемо или запущен какой-то дополнительный поток?Спасибо.

Ответы [ 2 ]

5 голосов
/ 31 октября 2010

Когда истекает срок действия пула автоматического выпуска.

Обычно это означает, что стек разматывается.

Так что подумайте об этом - ваше приложение ориентировано на события. Вы получаете события, отправленные на него - и они обрабатываются с помощью ряда функций. Когда каждая из функций возвращается, а событие завершается и обрабатывается, вызывается авто-релиз.

Это означает, что вы можете рассчитывать на то, что объект будет оставаться живым, когда вы автоматически высвобождаете его и возвращаете из функции вызывающей стороне. Никогда не ожидайте, что оно будет присутствовать при обработке какого-либо последующего события или при вызове вне существующего фрейма стека.

1 голос
/ 31 октября 2010

Из документации iOS

Каждый поток в приложении Какао поддерживает свой собственный стек объектов NSAutoreleasePool.Когда поток завершается, он автоматически освобождает все пулы автоматического выпуска, связанные с ним.

...