2016-12-06 81 views
0

Theres任何方式來保持應用程序運行,而用戶不殺死應用程序?我發現這可以通過RunLoop.current.run()完成,但是當在應用程序中像應用程序完全凍結一樣擊中應用程序時,我有一個Timer,它在RunLoop之前聲明,似乎是正確初始化的,但是計時器未PROC,繼承人一個簡單的例子Swift保持cli應用程序運行

import Foundation 

print("start") 

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

RunLoop.current.run() 

print("end") 

看來,我不抓是如何工作的。

問候

回答

2

的問題僅僅是你不知道如何使用定時器。它是不夠的,以init它。你必須時間表它。不要致電init...,請致電Timer.scheduledTimer...,整個事情將爲你而生。然後你會看到,實際上你的進程正在運行。

我把這個(因爲我沒有使用塞拉利昂我不能使用基於塊的定時器),它工作得很好:

進口基金會

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") 
+0

的感謝!我的糟糕,很長一段時間沒有使用定時器...... – norman784

+0

即使沒有計時器作爲測試,''end''從不打印,所以你可以看到你的命令行工具_is_仍在運行。 – matt