在应用程序生命周期中哪里删除委托?

Jac*_*kyW 2 iphone delegates objective-c uiviewcontroller ios

我有一个类的实例,它的委托只能调用一次。

视图控制器(视图 A)将调用self.delegate = self,并且有按钮可以转到其他视图控制器(VC)。

在其中一个 VC 中,我需要调用此实例并再次设置委托。

最初我将委托设置为 in viewWillAppear,但这不起作用,因为我正在加载委托数据viewDidLoad,并且由于viewDidLoad将首先运行,所以我可以将委托设置为viewDidLoadloadView

虽然删除委托可以在dealloc、 或中viewWillDisappear,但如果我呈现一个 VC,dealloc则视图 A 不会被调用,不是吗?由于视图尚未删除。

所以我的问题是,我在视图 A 中的哪里设置self.delegate = nil

如果我使用当前的 VC 方法,我应该在视图 A 中的哪里设置和删除委托?在介绍的 VC 中,我可以设置和删除 viaviewDidLoaddealloc

就应用程序生命周期的最佳实践提出这个问题。

我查看了iOS uiviewcontroller 生命周期

Jac*_*kyW 5

在提问之前我应该​​自己测试一下。

无论如何,对于其他可能有兴趣了解的人来说。

当视图 A 转到其他视图控制器(视图 B)时,视图 A 将释放分配。因此,在视图 A 的 dealloc 处删除委托并在视图 B 处设置委托是安全的。

如果通过单击视图 A 中的 a 显示视图 B,则不会调用 dealloc。因此,在这种情况下,最好分别使用 viewWillAppear 和 viewWillDisappear 来设置和删除委托。

干杯。