簡體   English   中英

Swift:將操作添加到 DispatchQueue/OperationQueue 但稍后啟動隊列

[英]Swift: Add operations to DispatchQueue/OperationQueue but launch the queue later

我有數據包進來,但在極少數情況下,處理它們的對象還沒有准備好。 我現在正在做的是

  • 將數據添加到數組
  • 有一個while (true)循環檢查對象狀態
  • 如果對象准備好,將數組成員彈出到對象上

這有效,但它非常丑陋。 我在想的是將掛起的操作添加到 OperationQueue 中,然后在處理對象准備好后啟動進程。

但是,在我告訴他們開始之前,我找不到任何允許我“暫停”操作的功能。

我該怎么辦?

您可以使用 NSOperationQueue 的isSuspended屬性。

var isSuspended: Bool { get set }

來自蘋果的文檔:

當此屬性的值為 false 時,隊列會主動啟動隊列中准備執行的操作。 將此屬性設置為 true 可防止隊列啟動任何排隊操作,但已執行的操作會繼續執行。 您可以繼續向掛起的隊列添加操作,但在您將此屬性更改為 false 之前,不會安排執行這些操作。

請注意,將此屬性設置為 true 只會阻止尚未啟動的操作。 在您的情況下,您應該在初始化 NSOperationQueue 對象后將此屬性設置為 true。 准備就緒后,將isSuspended設置為 false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM