我有一个macOS应用程序,它有计时器,每秒增加数量。每隔60秒,我就会显示一条消息通知。
我发现我的macOS Swift应用程序运行有一些延迟,并且在大约10分钟后开始睡眠(没有新的a;让我们再出现)。
我找到了一些解决方案,例如:
private func startTimer() {
timer = Timer.scheduledTimer(
timeInterval: 1.0,
target: self,
selector: #selector(timerTick),
userInfo: nil,
repeats: true
)
RunLoop.main.add(timer, forMode: RunLoopMode.commonModes)
}
但是这个命令并没有帮助我通过计时器的后台运行修复延迟: RunLoop.main.add(timer,forMode:RunLoopMode.commonModes)
需要一些经验丰富的Swift人帮助我解决这个有趣的挑战。我需要在后台应用中正确计算秒数,因为我的应用每隔几分钟会显示一次警报消息,如果它无法正确显示这些警报 - 我的应用程序将无法正常工作。
谢谢!
答案 0 :(得分:0)
我敢打赌你正在遇到App Nap。您可以通过NSProcessInfo告诉系统您的流程不应该通过App Nap进行控制。
您也可以尝试禁用App Nap defaults write <app domain name> NSAppSleepDisabled -bool YES
...但不确定它是否仍然有效(App Nap是在OS X 10.9中引入的,因此三年时间可能会禁用禁用功能...)