При использовании Autorelease, когда это на самом деле выпущено?

StackOverflow https://stackoverflow.com/questions/4061511

Вопрос

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

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

Это было полезно?

Решение

Когда «Autorelease Pool истекает».

Что это обычно означает, когда стек расстегнут.

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top