Swift让cli app保持运行

时间:2016-12-06 03:23:14

标签: swift

在用户没有杀死应用程序时,有什么办法让应用程序保持运行状态?我发现这可以通过 RunLoop.current.run()来完成,但是当点击应用程序就像应用程序完全冻结一样,我已经在之前声明了一个Timer RunLoop 并且似乎已正确初始化但计时器没有触发,这是一个简单的例子

import Foundation

print("start")

let _ = Timer.init(timeInterval: 1, repeats: true) { _ in
    print("proc")
}

RunLoop.current.run()

print("end")

似乎我没有意识到这是如何运作的。

此致

1 个答案:

答案 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")