Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在计算机处于睡眠状态或用户注销时启动NSTimer_Objective C_Macos_Cocoa_Nstimer - Fatal编程技术网

Objective c 如何在计算机处于睡眠状态或用户注销时启动NSTimer

Objective c 如何在计算机处于睡眠状态或用户注销时启动NSTimer,objective-c,macos,cocoa,nstimer,Objective C,Macos,Cocoa,Nstimer,我想在6小时后启动计时器。但由于我的电脑处于睡眠模式,计时器在6小时后不会启动。在我6个多小时后登录计算机2分钟后,它被触发。即使用户处于注销或系统睡眠模式,也可以启动计时器吗?这是一种简单的方法。为即将到来的事件创建一个NSDate,并设置一个计时器,用于将当前时间与该时间戳进行比较。此示例每秒运行一次 -(void)等待:(CGFloat)秒{ //设定等待时间 NSTimeInterval timeInSeconds=秒; __block NSDate*wait=[[NSDate date

我想在6小时后启动计时器。但由于我的电脑处于睡眠模式,计时器在6小时后不会启动。在我6个多小时后登录计算机2分钟后,它被触发。即使用户处于注销或系统睡眠模式,也可以启动计时器吗?

这是一种简单的方法。为即将到来的事件创建一个
NSDate
,并设置一个计时器,用于将当前时间与该时间戳进行比较。此示例每秒运行一次

-(void)等待:(CGFloat)秒{
//设定等待时间
NSTimeInterval timeInSeconds=秒;
__block NSDate*wait=[[NSDate date]dateByAddingTimeInterval:timeinsectonds];
[NSTimer scheduledTimerWithTimeInterval:1.0重复:是块:^(NSTimer*\u非空计时器){
NSDate*时间=[NSDate date];
如果([时间间隔开始日期:等待]>0){
//做点什么
}
}];
}
这样,进程将在唤醒计算机后立即运行


编辑:较旧的线程(如)建议您需要在唤醒后重新安排
NSTimer
,但情况似乎不再如此。

您可以通过以下方式安排机器从睡眠中唤醒、通电、进入睡眠或关机。这还取决于它是否是MacBook Pro,例如,因为如果盖子是关着的,IIRC你就不能这样做。你可以去看看——Fermata是一个小型macOS实用程序,在某些情况下可以防止盖子关闭睡眠。你可以防止你的Mac与之睡觉,等等。你的问题太笼统了,真的很难帮助你。请尝试使用我提供的信息,然后返回一个不适用于您的代码,并对您试图实现的目标进行更高级别的解释。如果您根本不想阻止计算机睡眠,您可以设置计时器启动的时间戳,当计算机唤醒时,立即运行计划的方法。请参见
didWakeNotification
:这是否回答了您的问题?