Хотя, как правило, представление предупреждения отображается поверх неизменяемого содержимого. Так что, если делегат жив, когда появится представление, он, вероятно, будет жив, когда его отклонят. Если это не так, вам нужно сделать именно то, что вы сделали, и вручную сбросить делегат представления оповещения, если вас больше не заботит его результат.
Таким образом, вам небезразличен просмотр предупреждений, поскольку вы заботитесь о его методе делегата. Сложность в том, что делегат может не подать заявку ко времени, когда оповещение отклонено. Таким образом, вам нужна логика, и для этой логики вам нужно сохранить ссылку на рассматриваемый вид оповещения.
Другими словами, вы делаете это правильно. Хотя, возможно, было бы полезно, если бы UIAlertView
сохранил свой делегат, но не похоже, что это произойдет, если он потерпит крах, когда его отклонят.
Наконец, я думал, что просмотр предупреждений заблокировал весь экранный ввод? Если нет, вы можете сделать его по-настоящему модальным, установив vc.view.userInteractionEnabled = NO
, когда появится предупреждение, и переключите его обратно, когда оно будет отклонено. Таким образом, пользователь не может отключить контроллер, пока отображается предупреждение. Что звучит немного более вменяемым для меня.