取消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