2012-11-06 72 views
1
  1. 我正在使用ARC。
  2. 我在用戶點擊一個UITableView單元格後顯示一個警告視圖。
  3. 99%的時間一切正常。

現在到了WEIRED PART解除UIAlertView時的崩潰

我有這種說法層次 -

的UITableView - >第一的UIViewController - >兒童UIViewControllerControllers

崩潰只出現後我打開一個,具體的孩子UIViewControllers。在我輸入所有其他子視圖控制器後,警報視圖很好。如果我即使輸入一次「有問題」的視圖控制器,甚至5分鐘後UIAlert視圖也會崩潰,即使我進入了所有其他視圖控制器。

我不得不再次說alertView是在根UITableView中呈現的。即使警報視圖回調方法只有NSLoging,它也會崩潰。

崩潰報告:

*** -[ReviewViewController isKindOfClass:]: message sent to deallocated instance 0x20bea8d0 

而 'ReviewViewController' 是有問題的viewController。

感謝

沙尼

回答

3

你的UIAlertview的委託設置爲呼叫UIViewController。在某些情況下,當你離開它時,UIViewController正在被解除分配。

如果您需要委託人對UIAlertView作出響應,則必須構建代碼,以便在UIAlertView將被解除之前,委託不會被解除分配。

+0

委託是UITable視圖控制器,我檢查了很多次。 – shannoga

+0

@shannoga我明白這一點。這是由操作系統解除分配的UITableViewController。 UIAlertView的委託屬性無疑是一個弱引用,因此ARC將允許在不再引用該視圖控制器時取消分配。 – pdriegen

+1

UIAlertView的代表不是一個弱引用,它是分配的。請參閱文檔。在ReviewViewController dealloc方法中將代理設置爲nil可能會解決崩潰問題。 – jbat100