Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在哪里删除应用程序生命周期中的代理?_Ios_Objective C_Iphone_Uiviewcontroller_Delegates - Fatal编程技术网

Ios 在哪里删除应用程序生命周期中的代理?

Ios 在哪里删除应用程序生命周期中的代理?,ios,objective-c,iphone,uiviewcontroller,delegates,Ios,Objective C,Iphone,Uiviewcontroller,Delegates,我有一个类的实例,它的委托只能调用一次 视图控制器(视图A)将调用self.delegate=self,并具有转到其他视图控制器(VC)的按钮 在一个VC中,我需要调用这个实例并再次设置委托 最初,我在viewwillbeen中设置委托,但这不起作用,因为我正在viewDidLoad中加载委托数据,并且由于viewDidLoad将首先运行,我可以在viewDidLoad或loadView中设置委托 虽然删除委托可以在dealoc中,或者视图将消失,但如果我演示的是VC,则不会调用视图a的deal

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

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

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

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

虽然删除委托可以在
dealoc
中,或者
视图将消失
,但如果我演示的是VC,则不会调用视图a的
dealoc
,不是吗?因为视图尚未删除

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

如果我使用当前VC方法,我应该在视图A中的何处设置和删除委托? 在VC中,我可以通过
viewDidLoad
dealloc
设置和删除

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


我已经看过了

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

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

当转到其他viewController(视图B)时,视图A将解除锁定。因此,可以安全地删除视图A的dealloc处的委托,并将该委托设置为视图B

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


干杯。

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

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

当转到其他viewController(视图B)时,视图A将解除锁定。因此,可以安全地删除视图A的dealloc处的委托,并将该委托设置为视图B

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


干杯。

您必须在ViewDidDisplay中将“委派给自己”设置为“出现”,并在ViewDidDemouse中将“委派”设置为“零”

您必须在ViewDidDemouse中将“委派给自己”设置为“出现”,并在ViewDidDemouse中将“委派”设置为“零”