我有一个类的实例,它的委托只能调用一次。
视图控制器(视图A)将调用self.delegate = self
,并具有转到其他视图控制器(VC)的按钮。
在其中一个VC中,我需要来调用此实例并再次设置委托。
最初我在viewWillAppear
设置了委托,但这不起作用,因为我正在viewDidLoad
加载委托数据,并且由于viewDidLoad
将首先运行,我可以在viewDidLoad
或loadView
设置委托。
虽然删除委托可以在dealloc
或viewWillDisappear
,但如果我正在展示VC,则不会调用{A}的dealloc
不是吗?由于视图尚未删除。
所以我的问题是,我在哪里设置self.delegate = nil
在视图A?
如果我使用现有的VC方法,我应该在哪里设置和删除View A中的委托?
在提供的VC中,我可以通过viewDidLoad
和dealloc
设置和删除。
根据应用程序生命周期的最佳实践提出这一点。
答案 0 :(得分:3)
在问之前,我应该自己测试一下。
无论如何,对于可能也有兴趣知道的其他人来说。
查看A将在转到其他viewController(视图B)时dealloc。因此,在View A的dealloc中删除委托是安全的,并在View B中设置委托。
如果通过单击视图A中的视图来呈现视图B,则不会调用dealloc。因此,在这种情况下,最好分别使用viewWillAppear和viewWillDisappear来设置和删除委托。
干杯。
答案 1 :(得分:0)
你必须在viewDidAppear中将setDelegate设置为self并在viewDidDisappear中将Delegate设置为nil