2013-12-12 66 views
1

NSOperation被之前的後臺任務完成超過的NSOperation被之前的後臺任務完成超過

我打電話和的NSOperation並且已經設置了最大併發任務2 的NSOperation調用的一些背景知識方法 不過的NSOperation不會等待後臺任務完成 並從隊列中移除 因此下一個操作開始我不想要 請幫忙,如何讓NSOperation繼續執行直到後臺任務完成。

+1

你可以在你創建NSOperation對象的地方顯示你的代碼嗎?如果你使用了一個子類,那麼你正確地實現它是至關重要的。如果您使用'addOperationWithBlock:'方法將塊作爲參數,則您的塊必須執行* synchronous *。另見https://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSOperation_class/Reference/Reference.html – CouchDeveloper

回答

1

的NSOperation志願的它的屬性isFinished和isExecuting。從documentation

完成後或者其任務的取消,您同時運行 對象必須產生KVO通知雙方isExecuting和 isFinished關鍵路徑標記狀態,爲您的 操作的最終變化。 (在取消的情況下, 更新isFinished鍵路徑仍是很重要的,即使操作沒有完成 它的任務。排隊的操作必須報告它們 已完成,然後才能將它們從隊列中刪除。)除了生成KVO通知的 之外,您正在執行的替代操作和 isFinished方法也應該繼續根據您的操作狀態返回準確值 。

基本上,當您生成通知isFinished = YESisExecuting = NO時,您的NSOperation將從隊列中刪除。

相關問題