如何在iOS上处理时间事件?

时间:2011-11-15 16:41:40

标签: iphone ios ipad date timer

我正在编写一个iPad应用程序,当这一天变为星期日时我必须更改图形。

我直截了当的解决方案是检查- (void)applicationDidBecomeActive:(UIApplication *)application-(void)viewWillAppear:(BOOL)animated方法中的日期,并设置一个计时器,例如每10分钟检查当应用程序处于活动状态时是否已更改为星期日。< / p>

是否还有另一种可能更有效的方法来处理这个问题?

5 个答案:

答案 0 :(得分:13)

在您的申请代表中,实施以下方法: -(void)applicationSignificantTimeChange:(UIApplication *)application

当白天发生变化时,或者由于某种原因(例如时区更改)在后台更改了设备的时间,就会调用此方法。

答案 1 :(得分:4)

另一个选择是使用你提到的相同的两种方法,“viewWillAppear:”和“applicationDidBecomeActive:”,而不是每10分钟设置一个计时器,只需计算当前时间和下一个星期日之间的时间量。取这个时间间隔并用它设置一个定时器,它将在星期日的午夜准确发射。

答案 2 :(得分:1)

当天发生变化时会有通知。你可以听它,并在它发射时检查它是否是星期天。

您还应该检查它是否在发布时是星期天。

答案 3 :(得分:1)

该解决方案有什么问题?在某些地方,它是否比每10分钟更频繁地变成星期天?

你可能想要考虑一件事:在你的计时器开火方法中,如果时间是在23:50之后,那么更快地重新安排计时器(即大约00:00),这样你就更有可能准确地捕捉到午夜。 / p>

答案 4 :(得分:1)

本章可能有用,使用某种类型的通知进行更新:

http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/IPhoneOSClientImp/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1

虽然我自己最终得到了您使用的相同解决方案,但我发现它更容易,更可靠。