我有一個下載管理器,當數據準備就緒時,異步調用viewController的委託方法,但如果用戶按回(viewController被刪除並釋放),下載管理器嘗試發送消息未定義的委託。 爲了避免這種情況,我試圖在數據準備好的時候檢查委託,以確保它不是零,並且響應試圖調用的選擇器。但是當我嘗試檢查它是否爲零時會引發異常。使用與委託分配
我使用assign屬性不保留定義委託。
我該如何檢查以避免委託未定義的控制器?
謝謝
我有一個下載管理器,當數據準備就緒時,異步調用viewController的委託方法,但如果用戶按回(viewController被刪除並釋放),下載管理器嘗試發送消息未定義的委託。 爲了避免這種情況,我試圖在數據準備好的時候檢查委託,以確保它不是零,並且響應試圖調用的選擇器。但是當我嘗試檢查它是否爲零時會引發異常。使用與委託分配
我使用assign屬性不保留定義委託。
我該如何檢查以避免委託未定義的控制器?
謝謝
聽起來好像你已經錯誤地實施了委託。
您的下載管理器應該保存一個名爲例如delegate
。在初始化下載管理器之後或同時,viewController將自己設置爲該下載管理器的委託 - 例如downloadManager.delegate = self;
你的viewController應該爲零,一旦卸載,準確的價值/ deallocs - 有點像`
- (void)dealloc
{
downloadManager.delegate = nil;
...
[super dealloc];
}
現在下載管理器可以檢查非零等它自己的實例變量(代表)沒有任何問題。
我缺少的一點是將委託設置爲零,當我的控制器處理。謝謝:) – Arouri