gpt4 book ai didi

macos - 当应用程序处于后台时, cocoa 计时器不会触发

转载 作者:行者123 更新时间:2023-12-03 17:11:36 26 4
gpt4 key购买 nike

我是一个从 php 转向 OSX cocoa 编程的菜鸟,并且在使用 NSTimer 时遇到了很多麻烦。我正在尝试创建一个应用程序,该应用程序使用户指定的持续时间计时器在后台运行,然后在该计时器到期时执行某些操作(例如倒计时器)。

当它在前台时,我的应用程序会正常工作。但是,如果它进入后台(即:我单击另一个应用程序窗口),计时器就会完全错误,并且倒计时似乎会临时进行。然后,一旦我重新关注这个应用程序,计时器似乎就会重新启动。但是,如果应用程序处于后台时已经过了预先指定的时间,应用程序并不知道这一点。

这是我在主运行循环中调用的基本代码:

self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateStatus) userInfo:nil repeats:YES];

-(void) updateStatus {
if([self.totalSeconds]>0) {
self.totalSeconds=self.totalSeconds-1;
} else {
//perform end of timer methods
}
}

我做错了什么?

预先感谢您的时间/帮助。

-M

最佳答案

您不能依赖计时器的计时(尤其是当您在后台运行时)。您可以使用计时器作为查看时间的提示,但是您确定现实世界中已经过去了多少时间的方法不是通过递减整数,而是通过将原始时间存储在实例变量中并比较现在的时间。 (查看 NSDate 了解如何做到这一点。)

关于macos - 当应用程序处于后台时, cocoa 计时器不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23692375/

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