0
我从库中运行一个函数,我看不到实现。如何阻止线程无限期地在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;
}
}
因为这意味着后台程序仍在工作。