在NSDate调用一个方法

我想在特定的时间和date(使用NSDate )调用一个方法,但我不能解决如何做到这一点。

我不想使用NSTimer因为当应用程序进入后台或被closures时,它将暂停。 我不想在后台运行一个,因为这只能解决一半的问题,而且在我看来这是一种浪费的方式。 我想,如果我将来可以在NSDate中触发一个方法,当应用程序再次打开时,我可以看到当前date是否已经通过了开始date,以及是立即调用还是继续等待。

我想我正在寻找像UILocalNotification ,没有通知。

我希望有一个简单的方法做到这一点,我似乎无法find,所以任何帮助将不胜感激。

起初,它听起来像你想要的performSelector:withObject:afterDelay:方法。 所以当你想调用select器的时候你有一个NSDate *date

 NSTimeInterval delay = [date timeIntervalSinceNow]; [self performSelector:@selector(methodToFire) withObject:nil afterDelay:delay]; 

当然,这不会超出你的运行时间,所以你几乎已经概述了你需要做的事情。 你只需要把date保存到某个地方(有很多方法可以做到这一点),然后在applicationDidBecomeActive检查它。 你可以使用上面使用的同样的timeIntervalSinceNow方法。 (如果date已过,则间隔为负)。

 if ( [date timeIntervalSinceNow] <= 0 ) { // do something... } 

你为什么不使用NSTimer,并在…

 - (void)applicationDidBecomeActive:(UIApplication *)application 

callback,检查时间和date,并更新计时器,或者如果date已过,则调用该函数。