我從NavigationController的子視圖調用NSOperation。NSOperation performSelectorOnMainThread崩潰
MyOperation *op = [[MyOperation alloc] target:self action:@selector(didFinishOperation)];
的操作從一個服務器加載一些數據,分析它,然後當工作完成發送
[target performSelectorOnMainThread:action withObject:nil waitUntilDone:YES];
。這通常是工作...
問題是,當我從導航控制器按下後退按鈕,而NSOperation正在做它的工作,應用程序崩潰,因爲該操作引用一個釋放實例。
我試圖保持操作 - 但它仍然崩潰...
在此先感謝
我已經取消viewWillDisappear操作: [operationQueue cancelAllOperations] 加載視圖時,我運行了多個操作。 正如你上面提到的 - 這將取消操作,但不是如果它在主要執行。 我試過了: if(target) [target performSelectorOnMainThread:action withObject:nil waitUntilDone:YES]; 但仍然發生錯誤... – abs 2009-11-14 08:26:40
我剛剛檢查了我的代碼,我的操作在嘗試通知其目標之前檢查它們是否被取消。 – ohhorob 2009-11-14 08:48:04
感謝ohhorob, 做了這個工作:) – abs 2009-11-14 08:55:32