Ios 在NSDate调用方法

Ios 在NSDate调用方法,ios,cocoa-touch,methods,nsdate,Ios,Cocoa Touch,Methods,Nsdate,我试图在某个特定的时间和日期调用一个方法(使用NSDate),但我不知道怎么做 我不想使用NSTimer,因为当应用程序进入后台或关闭时,它会暂停。我也不想在后台运行一个,因为这只解决了一半的问题,在我看来,这样做是一种浪费。我想,如果我将来可以在一个NSDate上启动一个方法,当应用程序再次打开时,我可以看到当前日期是否已超过启动日期,因此是立即调用它还是继续等待 我想我正在寻找类似于UILocalNotification,没有通知的东西 我希望有一种简单的方法可以做到这一点,但我似乎找不到,

我试图在某个特定的时间和日期调用一个方法(使用
NSDate
),但我不知道怎么做

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

我想我正在寻找类似于
UILocalNotification
,没有通知的东西


我希望有一种简单的方法可以做到这一点,但我似乎找不到,因此非常感谢您的帮助。

您为什么不使用NSTimer,并且在

- (void)applicationDidBecomeActive:(UIApplication *)application

回调,检查时间和日期,更新计时器,或者在日期已过时调用函数

一开始,我觉得您需要
performSelector:withObject:afterDelay:
方法。因此,当您要调用选择器时,您有一个
NSDate*date

NSTimeInterval delay = [date timeIntervalSinceNow];
[self performSelector:@selector(methodToFire) withObject:nil afterDelay:delay];
当然,这不会超过您的运行时,所以您已经大致概述了您需要做什么。您只需将日期保存在某个地方(有很多方法可以做到),然后在
applicationIDBecomeActive
中对照它进行检查。您可以使用与我上面使用的相同的
timeIntervalSinceNow
方法。(如果日期已过,则间隔将为负数。)


如果([date-timeIntervalSinceNow]是的,我想这就是我要使用的。有点希望会有一个
性能选择器:with object:atDate:
,但我想我希望的是不存在的东西。:-)有什么理由使用
[自性能选择器:@selector(methodToFire)with object:nil afterDelay:delay]
over
NSTimer
?我想这不是我能想到的,计时器更具代码性,但提供了更大的灵活性(您可能不需要)。我想尽可能远离计时器,以保持最大性能。是否有理由使用
NSTimer
over
[自执行选择器:@selector(methodToFire)withObject:nil afterDelay:delay]?@Baza207,这样您就可以不断更新UI,而不必处理线程。(还有一个发射速度很慢的NSTimer是非常出色的,我要确保在过早优化之前先对其进行分析。)啊,好的。这有助于我的决定。非常感谢你的帮助-D
if ( [date timeIntervalSinceNow] <= 0 ) {
    // do something...
}