我有一個NSOperation不在主線程中運行。它是從UITableViewController派生的。當操作完成後,我想重新加載tableview,因爲有些數據已經改變。我已經爲背景設置了一個委託來完成通知。完成後,我使用performSelectorOnMainThread專門在主線程上調用reloadData的包裝器。NSOperation在後臺完成,試圖通知主線程,視圖不再存在。崩潰
大部分情況下,這個效果很好,但是,原始(編輯)tableViewController(/編輯)獲得釋放並獲得殭屍呼叫的機會非0。
所以,問題是兩個部分:
- 是否有可能有從後臺線程的委託,不保留的對象?
- 這只是一個糟糕的設計?我應該使用NSNotifications嗎?這是否是在這種情況下通知的首選方法?
在此先感謝。
真正的問題是:爲什麼你的表格視圖被釋放?我有一種感覺,表視圖沒有妥善保留,這是你的根本問題。 – 2011-05-19 04:10:43
John是對的,如果你需要重新加載它,你不應該釋放tableView。 reloadData方法將重置tableView,這就是你想要的。如果你想隱藏它或只是使用tableView.hidden屬性。 – 2011-05-19 05:35:10
更正後,如果從導航控制器堆棧彈出,則可以釋放tableViewController。數據仍然可能是相關的,但我希望線程完成(並保存它正在處理的數據) – 2011-05-19 18:24:43