天天看點

iOS開發——面試篇&面試總結(五)取消GCD任務

取消GCD任務

在NSOperationQueue中,我們可以随時取消已經設定要準備執行的任務(當然,已經開始的任務就無法阻止了),而GCD沒法停止已經加入queue的block(其實是有的,但需要許多複雜的代碼);

GCD原生并不支援取消操作。


dispatch_suspend函數也隻能暫停開啟新的未執行的block,已經處于執行中的block是無法暫停的。

實作方法:

但是,通過參考NSOperation的cancel機制,你隻要加一個外邊變量,用于标記block是否需要取消。然後block中通過及時的檢測這個外部變量的狀态,當發現需要取消時,停止block中的後續操作,釋放資源。就能達到及時取消block的目的

轉載于:https://www.cnblogs.com/stronger-ios-lcx/p/5629800.html

下一篇: mysql8.0加密

繼續閱讀