Я использовал GCD для выполнения фона. однако в моем классе ViewController есть кнопка. Как я могу остановить GCD между выполнением, как только пользователь нажмет кнопку? вот мой кодкак остановить GCD между выполнением в swift
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
спасибо за разъяснения и пояснения –