Я запускаю функцию из библиотеки, которую я не вижу в реализации.Как остановить поток от неограниченного запуска в Swift?
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
someClass.beginService();
});
Этот класс библиотеки вызывает функцию делегата класса.
class Mine: UIViewController, SomeClassDelegate {
let someClass = SomeClass();
override func viewDidLoad() {
super.viewDidLoad();
someClass.delegate = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.someClass.beginService();
});
}
func delegateCall() {
print ("delegateCall is called!");
// do some stuff
}
}
Слово delegateCall is called!
затем печатается периодически 1 раз в секунду в окне журнала, потому что я называю self.someClass.beginService();
.
Проблема в том, как я могу завершить эту тему? Я не хочу прибегать к:
class Mine: UIViewController, SomeClassDelegate {
let someClass = SomeClass();
var okToRun = false;
override func viewDidLoad() {
super.viewDidLoad();
someClass.delegate = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.someClass.beginService();
okToRun = true;
});
}
func delegateCall() {
if okToRun {
print ("delegateCall is called!");
// do some stuff
}
}
@IBAction func buttonStopTapped (sender: AnyObject) {
okToRun = false;
}
}
Потому что это означает, что фоновый режим все еще работает.