gpt4 book ai didi

Swift Scheduler 滞后?

转载 作者:行者123 更新时间:2023-11-30 10:35:14 26 4
gpt4 key购买 nike

我正在尝试创建一个每两秒执行一次函数的应用程序。为了实现这一点,我使用 Timer.scheduledTimer 函数。问题是该函数没有按照应有的那样每两秒执行一次。通常应用程序开始时的间隔是 2 秒,但后来(大约半分钟后)间隔有时是 7 秒,有时是 13 秒等。

这是我的代码:

import Cocoa

class ViewController: NSViewController {

@objc func glavno(){

let date = Date()
var calendar = Calendar.current
calendar.timeZone = TimeZone(identifier: "UTC")!
let components = calendar.dateComponents([.hour, .year, .minute], from: date)
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
let seconds = calendar.component(.second, from: date)
print("\(hour):\(minutes):\(seconds)")

}

var timer = Timer()

override func viewDidLoad() {

//Load UI
super.viewDidLoad()

//Start the task
timer = Timer.scheduledTimer(timeInterval: 2, target: self, selector: #selector(self.glavno), userInfo: nil, repeats: true)

}

override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}

}

那么该应用程序的功能是什么,它每两秒打印一次时间。这是我得到的输出(您会看到该函数不会在每个时间间隔每两秒执行一次):

20:9:21
20:9:23
20:9:25
20:9:37
20:9:49
20:10:1
20:10:3
20:10:5
20:10:17
20:10:23

我是 Swift 语言的初学者,有人可以给我指出正确的方向吗?我也尝试在不使用计时器的情况下执行此操作,但仅使用具有无限循环的函数 (while(true)),并在打印时间后在该循环内休眠两秒钟。

如果重要的话,我正在运行 Swift 版本 5.0.1。

谢谢!

最佳答案

App Nap 是造成这种情况的原因:Swift timer is not executing on precise time

以下是我如何修复/禁用应用程序 Nap 的方法:Disable app nap in Swift

关于Swift Scheduler 滞后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58191677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com