我正在尝试在特定时间和日期调用某个方法(使用NSDate
),但我无法确定如何操作。
我不想使用NSTimer
,因为当应用进入后台或关闭时,它会暂停。我不想在后台运行一个,因为这只能解决问题的一半,并且在我看来是浪费的方式。我想如果我将来可以在NSDate
开一个方法,当应用程序再次打开时,我可以看到当前日期是否已经超过了开火日期,因此无论是立即调用它还是继续等待。
我想我正在寻找像UILocalNotification
这样的东西,没有通知。
我希望有一种简单的方法可以解决这个问题,所以任何帮助都会非常感激。
答案 0 :(得分:1)
为什么不直接使用NSTimer,而且......
- (void)applicationDidBecomeActive:(UIApplication *)application
回调,检查时间和日期,并更新计时器,或者如果日期已过,则调用该函数。
答案 1 :(得分:1)
起初,我觉得你想要performSelector:withObject:afterDelay:
方法。因此,当您想要调用选择器时,您有一个NSDate *date
。
NSTimeInterval delay = [date timeIntervalSinceNow];
[self performSelector:@selector(methodToFire) withObject:nil afterDelay:delay];
当然,这不会超过您的运行时,所以您已经概述了您需要做的事情。您只需在某处保存日期(有很多方法可以做到这一点),然后在applicationDidBecomeActive
中对其进行检查。您可以使用我上面使用的相同timeIntervalSinceNow
方法。 (如果日期已过,则间隔为负。)
if ( [date timeIntervalSinceNow] <= 0 ) {
// do something...
}