簡體   English   中英

暫停NSOperation

[英]Pause NSOperation

我有NSOperationQueue ,其中有一些NSOperations (特別是NSInvocationOperations )。 此操作會進行一些計算並相應地更改UI元素的狀態(當然,通過performSelectorOnMainThread:... ),通常使用動畫。

我的UI有UINavigationViewController和一些用於導航到另一個視圖的按鈕。 因此,用戶可以保留當前視圖,而計算/動畫仍在進行中。 我需要的是以某種方式停止這一點,直到用戶回到當前視圖。

我找到的唯一解決方案是創建一些線程安全的布爾標志 - 並在所有線程中檢查它(類似於:while!flag sleep_for_some_time;)。 還有更好的東西嗎?

問題有點模糊,所以很難說不知道所有的代碼。 話雖如此,我可以通過以下方式解決問題:

選項1.在NSOperation的子類中,添加自己的原子KVO屬性“isPaused”。 在操作本身內,觀察該屬性並在其發生變化時進行相應處理。

選項2.您是否曾暫停操作隊列? 如果是這樣,請考慮從您的操作中觀察該屬性,並且如果該值發生更改,則每個屬性都可以獨立執行。

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

但總的來說,暫停正在進行的操作沒有靈丹妙葯。 你必須烘焙自己的解決方案。 但是傷害不應該太糟糕。

暫無
暫無

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

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