在app生命周期中删除委托的位置?

时间:2017-04-20 05:04:16

标签: ios objective-c iphone uiviewcontroller delegates

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

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

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

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

虽然删除委托可以在deallocviewWillDisappear,但如果我正在展示VC,则不会调用{A}的dealloc不是吗?由于视图尚未删除。

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

如果我使用现有的VC方法,我应该在哪里设置和删除View A中的委托? 在提供的VC中,我可以通过viewDidLoaddealloc设置和删除。

根据应用程序生命周期的最佳实践提出这一点。

我查看了iOS uiviewcontroller life cycle

2 个答案:

答案 0 :(得分:3)

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

无论如何,对于可能也有兴趣知道的其他人来说。

查看A将在转到其他viewController(视图B)时dealloc。因此,在View A的dealloc中删除委托是安全的,并在View B中设置委托。

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

干杯。

答案 1 :(得分:0)

你必须在viewDidAppear中将setDelegate设置为self并在viewDidDisappear中将Delegate设置为nil