在用户没有杀死应用程序时,有什么办法让应用程序保持运行状态?我发现这可以通过 RunLoop.current.run()来完成,但是当点击应用程序就像应用程序完全冻结一样,我已经在之前声明了一个Timer RunLoop 并且似乎已正确初始化但计时器没有触发,这是一个简单的例子
import Foundation
print("start")
let _ = Timer.init(timeInterval: 1, repeats: true) { _ in
print("proc")
}
RunLoop.current.run()
print("end")
似乎我没有意识到这是如何运作的。
此致
答案 0 :(得分:2)
问题仅在于您不知道如何使用计时器。它不足以init
它。你必须安排它。不要打电话给init...
,而是打电话给Timer.scheduledTimer...
,整个事情会为你而生。然后,您会看到实际上您的流程已正在运行。
我把它(我不能使用基于块的计时器,因为我没有使用Sierra)并且它工作正常:
导入基金会
class TimerHolder:NSObject {
var timer : Timer?
func timerFired(_:Timer) { print("fired") }
override init() {
super.init()
self.timer = Timer.scheduledTimer(timeInterval: 1, target: self,
selector: #selector(timerFired),
userInfo: nil, repeats: true)
}
}
print("start")
_ = TimerHolder()
RunLoop.current.run()
print("end")