2012-08-17 95 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 
});