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;
}
}
因爲這意味着後臺程序仍在工作。