在NSDate调用方法

时间:2011-03-31 04:29:57

标签: ios cocoa-touch methods nsdate

我正在尝试在特定时间和日期调用某个方法(使用NSDate),但我无法确定如何操作。

我不想使用NSTimer,因为当应用进入后台或关闭时,它会暂停。我不想在后台运行一个,因为这只能解决问题的一半,并且在我看来是浪费的方式。我想如果我将来可以在NSDate开一个方法,当应用程序再次打开时,我可以看到当前日期是否已经超过了开火日期,因此无论是立即调用它还是继续等待。

我想我正在寻找像UILocalNotification这样的东西,没有通知。

我希望有一种简单的方法可以解决这个问题,所以任何帮助都会非常感激。

2 个答案:

答案 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...
}