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