我用GCD執行後臺執行。但是在我的ViewController類中有按鈕。一旦用戶點擊按鈕,我可以在執行之間停止GCD? 這裏是我的代碼如何在執行之間停止GCD
dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_BACKGROUND.value), 0), {
self.StartProcess()
})
@IBAction func buttonIsClicked(sender: AnyObject) {
// how to stop GCD execution?
}
你需要一個變量從你的IBAction傳遞給後臺線程,它應該停止。後臺線程必須定期查詢變量。 – Volker
無論如何安全地強制取消進行中的飛行操作,無論使用哪種方法來發送,都沒有辦法。在Swift和Objective-C中(以及更一般地說,在任何*非垃圾收集的運行時)都是如此。您必須設置一種方式來通知機上操作應該清理並提前返回。這已在其他問題,包括(我)在其他問題多次處理:http://bit.ly/1OCirkM和在這裏:http://bit.ly/1Dd2zjo – ipmcc
感謝您的解釋和參考 –