我正在编写一个非重复使用NSTimer的应用程序。它设置一个约30秒的计时器,并在时间结束前或在NSTimer最终调用的方法内运行.invalidate()
。
我注意到以下输出,每当我使用计时器时通常重复5次左右:
Jul 25 12:08:47 iPhone timed[62] <Notice>: (Note ) CoreTime: Want active time in 41.53min. Need active time in 8333.20min. Remaining retry interval: 0.000000min.
Jul 25 12:08:47 iPhone UserEventAgent[26] <Error>: validateAndAddDefaults(com.apple.timed): End Time (inf) > now (491166527.7) + BACKGROUND_TASK_AGENT_JOB_WINDOW_MAX_TIME_FROM_NOW_SEC (3024000.0) + BACKGROUND_TASK_AGENT_JOB_TIME_ERROR_MARGIN (300.0)
Jul 25 12:08:47 iPhone timed[62] <Notice>: (Error) CoreTime: Error requesting proactive time check job
我做错了吗?应用程序似乎按预期工作。
以下是我创建计时器的方法:
let timeRemaining = UIApplication.sharedApplication().backgroundTimeRemaining
let timeoutIn = [timeRemaining - 3, 30].minElement()!
self.timeoutTimer = NSTimer.scheduledTimerWithTimeInterval(timeoutIn, target: self, selector: #selector(ACMEService.completeUpdate), userInfo: nil, repeats: false)
以下是我如何撕毁它:
if let timer = self.timeoutTimer {
timer.invalidate()
self.timeoutTimer = nil
}