Когда я должен выпустить объект в dealloc? - PullRequest
1 голос
/ 17 февраля 2010

Иногда при кодировании в Objective C для iPhone я задаюсь вопросом, должен ли я освобождать объект в dealloc, или иногда лучше запускать в viewWillDisappear, если это представление является отдельной редко используемой частью вашего приложения.

Спасибо.

1 Ответ

2 голосов
/ 17 февраля 2010

Ну, во-первых, вы, вероятно, захотите выпустить вещи в viewDidDisappear: (после того, как они не будут отображаться на экране), а не viewWillDisappear: В любом случае, вам, вероятно, следует выпустить это как в viewDidDisappear:, так и в dealloc ...

В viewDidDisappear: вы должны освободить все, что вам не нужно, пока вы находитесь вне экрана, чтобы сохранить память. В dealloc вы должны освободить все, что ваш объект мог сохранить. Вы хотите сделать это независимо от того, выпустили ли вы его в viewDidDisappear:, если ваш код вводится по странному пути, где viewDidDisappear: не вызывается. Это может произойти в будущем, когда вы повторно используете контроллер представления в другом контексте, или когда Apple что-то меняет в контроллерах представления сбора, в которых вы размещаете свой VC.

До тех пор, пока вы надлежащим образом обнуляете ивары после их выпуска (что должно произойти автоматически, если вы используете свойства), переиздание не будет проблемой, потому что, если вы отпустите его в обоих местах во втором выпуске в конечном итоге отправит сообщение о выпуске на ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...