2017-04-20 122 views
0

我有一个类的实例,它的委托只能调用一次。在应用程序生命周期中何处删除委托?

视图控制器(查看A)将调用self.delegate = self,并有按钮去其他视图控制器(VC)。

在其中一个VC中,我需要来调用这个实例并重新设置委托。

起初我设置委托在viewWillAppear,但是这是行不通的,因为我加载在viewDidLoad委托数据,由于viewDidLoad将首先运行,我可以设置委托在viewDidLoadloadView

而除去委托可以在dealloc,或viewWillDisappear,但如果我提出一个VC,查看A的dealloc不会被称为是不是?由于该视图尚未删除。

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

如果我使用的是目前VC的方法,我应该在哪里设置和删除委托在观? 在提交VC时,我可以通过viewDidLoaddealloc进行设置和删除。

在应用生命周期的最佳实践方面的苦恼。

我看iOS uiviewcontroller life cycle

回答

0

我应该问之前有测试此我自己。

总之,别人谁可能有兴趣知道为好。要其他的viewController(视图B)时

视图A将dealloc的。因此,可以安全地在View A的dealloc中删除委托,并将代理设置在视图B中。

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

干杯。

0

您必须将viewDeidgate设置为selfDidAppear并将delegate设置为nil in viewDidDisappear

相关问题