2012-08-17 78 views
0

我正在开发一个iPhone应用程序(在Objective-C中),并且我试图使其具有某种类型的'动作侦听器',它经常检查以查看当前日期和时间与填充事件对象(从用户日历中检索)的NSMutableArray中的第一个对象的日期和时间相匹配。特定事件侦听器objective-c

我的问题是,我无法弄清楚如何做到这一点,而我的代码的其余部分继续运行,因为现在我有一个for循环中运行,不断检查,从而停止我的代码,并防止应用程序继续运行。如果有人知道任何类型的教程,或有解释,我将不胜感激。

谢谢!

+0

你能具体谈谈你正试图在这里完成什么? – J2theC 2012-08-17 18:21:53

+0

我想要一个'独立'的代码片段(它不会干扰其他代码/进程),它会不断检查当前日期和时间是否与事件/日期对象相匹配 – iphonedev7 2012-08-17 18:25:52

回答

1

设置一个的NSTimer开火所需的日期。 此处的NSTimer类别对此有用:https://github.com/adamjernst/NSTimer-AbsoluteFireDate

您还可以尝试创建并安排UILocalNotification以在特定日期收到通知。

+0

谢谢!,但它似乎只适用于应用程序在前台,我需要它在所有状态下工作。例如,即使他们没有在前台打开我的应用程序,也应该在达到特定日期和时间时通知用户。 – iphonedev7 2012-08-17 19:13:18

+0

在这种情况下,请尝试UILocalNotification。它也可以在后台运行。 – Felix 2012-08-17 19:18:31

+0

太好了!......我想读/了解UILocalNotification苹果文档,但最喜欢的苹果之证件的,这是很难理解的,但我希望我可以做出来的东西吧,谢谢。 – iphonedev7 2012-08-17 19:25:58

0

您可以使用NSTimer修改:请参阅phix23的答案,以获得更适用于iOS的fireDate代码。

苹果文档:NSTimer

+0

非常感谢!我想我的答案在于NSThread(s),NSRunLoop(s)和NSTimer(s)的联合使用。 – iphonedev7 2012-08-17 18:30:13

+0

没有必要定期检查日期。您可以设置NSTimer在您想要的确切时间触发。看到我的答案。 – Felix 2012-08-17 18:34:08

+0

@ phix23是啊,你链接的类别是有用的,很好的电话。投票给你! – MechEthan 2012-08-17 18:43:32

0

获取当前时间和事件时间之间的时间,并使用dispatch_after

dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, timeDifference * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    //Your code 
});