3
我有一組對象,init'd和視圖控制器擁有。視圖控制器在這些對象中的每一箇中啓動一個fetchData
方法,這些對象在後臺線程中運行,然後在完成時返回主線程並更改視圖控制器正在觀察的屬性 - self.dataFetchComplete
。對象在運行後臺線程時解除分配時發生崩潰
dispatch_async(dispatch_get_main_queue(), ^{
self.dataFetchComplete = YES;
});
如果這些對象是用這種方法完成之前視圖控制器被釋放,當它擊中self.dataFetchComplete = YES;
線,它崩潰。
如何在釋放後試圖更改此屬性時阻止它崩潰。
編輯:更多信息和清晰度。
您需要提供更多的上下文和代碼。如果你的對象被提前解除分配(並且你知道**它是故意發生的),那麼你的設計問題就很糟糕。 – 2013-07-05 18:18:39
請說明「如果在返回主隊列之前將對象解除分配,嘗試設置此屬性時會引發錯誤。」太多代名詞。什麼對象?什麼回來之前?什麼引發錯誤?你在使用ARC嗎? –
該塊應該捕獲(並保留)自我,因此如果它被釋放,那麼在其他地方有一個錯誤會過度釋放它。 –