2017-04-20 66 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

相關問題