作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从一个我看不到实现的库中运行一个函数。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
someClass.beginService();
});
这个库类调用我类的委托(delegate)函数。
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;
}
}
因为这意味着后台例程仍在工作。
最佳答案
尝试使函数失效。喜欢
var thread = dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.someClass.beginService();
你想停在哪里
thread.invalidate()
关于swift - 如何阻止线程在 Swift 中无限期运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40169938/
我是一名优秀的程序员,十分优秀!