1

可以說,我有一個複雜的計算在NSOperation塊中運行。我已經暫停了。關閉應用程序。然後重新啓動應用程序。我能恢復最後的狀態並從那裏繼續嗎? 是否存在針對此類問題的現有解決方案,或者它只能爲特定目的而定製?保存暫停NSOperationQueue文件

回答

0

這個問題有點含糊,所以很難說不知道所有的代碼在使用。有了這個說法,我可以通過以下方式來解決問題:

選項1.在NSOperation的子類中,添加您自己的原子KVO屬性「isPaused」。在操作本身中,如果它發生變化,請觀察該屬性並進行相應處理。

選項2.您是否暫停過Operation Queue本身?如果是這樣,請考慮從您的操作中觀察該屬性,並且如果該值發生更改,則每個人都可以獨立採取措施。

選項3.取消隊列中的所有操作,如果視圖再次出現,只需重新啓動新操作即可。

總體而言,暫時沒有正在進行的操作沒有靈丹妙藥。你將不得不烘烤你自己的解決方案。儘管如此,傷害不應該太大。

掛起和恢復隊列如果您想暫時停止執行操作,可以使用setSuspended:方法掛起相應的操作隊列。

暫停隊列不會導致已執行的操作在其任務中間暫停。它只是防止新的操作被安排執行。您可能會暫停隊列以響應用戶請求暫停任何正在進行的工作,因爲預期用戶可能最終想要恢復該工作。

欲瞭解更多詳情請參閱此鏈接蘋果文件:http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationObjects/OperationObjects.html