2017-03-26 168 views
0

我正在閱讀OperationQueue上的文檔。操作和操作的同步和異步狀態問題

我有這個疑問,我們正在創建的操作BlockOperation和OperationQueue的同步和異步狀態是什麼。

正如我所理解的那樣,它將作爲同步操作運行,但如果我們想以異步方式運行它,我們必須使用dispatch.async以異步方式調度它。

我理解它嗎?

+0

評論是不適合擴展討論;這個對話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/139280/discussion-on-question-by-jean-luc-godard-sync-and-async-status-of-operation-和)。 –

回答

1
OperationQueue完成當塊提交到 BlockOperation回報(或者,如果你繼承 Operation main法)

異步操作(即返回其isAsynchronous財產true

同步操作可以看出,需註明在Operation的子類中通過設置isFinished = true手動完成(您還應該同時設置isExecuting = false)。這允許您通過使用Dispatch.async將您需要執行的任何工作分配給不同的隊列,但仍保留在OperationQueue中的操作。這對於構建依賴操作或僅允許某些操作並行運行很有用。

蘋果的Operation docs對所有這一切都有很好的解釋。