2012-08-01 54 views
0

我有課。我在其中運行一些後臺任務(使用performselectorInBackground),當這些功能完成時,我添加了一個子視圖。但在某些情況下,我會在完成後臺任務之前釋放並設置零級對象。
事件然後這些後臺任務沒有被殺害,並添加子視圖更新我的用戶界面。殺死所有由對象開始的任務:Objective C

我如何殺掉對象啓動的所有任務。

回答

0

performSelectorInBackground是一套忘記方法。你不能取消它們。但是你有兩個選擇。您可以移到dispatch_*類型命令。或者你可以在後臺循環中使用布爾值來檢查它是否應該取消自己。然後,當你需要取消它時,只需將該布爾設置爲YES,並在下一個循環中返回或沿着這些線返回。

+2

'NSOperationQueue'是取消任務的更好選擇。只需讓對象創建一個所有操作都被添加到的隊列並調用'[myQueue cancelAllOperations];'應該全部取消。然而,已經運行的操作必須檢查是否使用'[self isCancelled]'取消了它們一旦啓動就停止執行。 – 2012-08-01 13:18:00

+0

是的大衛是對的。忘了NSOperationQueue。它通常超出了我的需求範圍,但它肯定比懶惰的布爾方法更好。 – 2012-08-01 13:25:45

+0

但在我的情況下,隊列中沒有其他操作,我可能只有一個在後臺運行的操作。我想取消當前正在運行的任務。我可以使用dispatch_ * – 2012-08-02 06:27:49