Как обрабатывать временные события в iOS?

Я кодирую приложение iPad, и мне нужно изменить графику, когда день изменится на воскресенье.

Мое прямое решение – проверить день в приложении - (void)applicationDidBecomeActive:(UIApplication *)application или -(void)viewWillAppear:(BOOL)animated методы и установить таймер, как каждые 10 минут, чтобы проверить, изменился ли день на Воскресенье, пока приложение активно.

Есть ли другой, возможно, более эффективный способ справиться с этим?

В вашем делете делегирования выполните следующий метод: -(void)applicationSignificantTimeChange:(UIApplication *)application

Этот метод вызывается, когда изменяется день, или если время использования устройства было изменено в фоновом режиме по любой причине (например, изменения в часовом поясе).

Другой вариант – использовать те же самые два метода, которые вы упомянули: «viewWillAppear:» и «applicationDidBecomeActive:», и вместо того, чтобы устанавливать таймер на каждые 10 минут, просто вычислите количество времени между текущим временем и следующим воскресеньем. Возьмите этот интервал времени и используйте его, чтобы установить таймер, который будет срабатывать точно в полночь в воскресенье.

Есть уведомление о том, когда меняется день. Вы могли бы послушать его и проверить, не воскресенье, когда он стреляет.

Вы также должны проверить, воскресенье ли это при запуске.

Что не так с этим решением? Становится ли оно воскресением чаще, чем раз в 10 минут в некоторых местах?

Одна вещь, которую вы, возможно, захотите рассмотреть: в методе огня по таймеру, если время после 23:50, то перенастройте таймер раньше (т. Е. Около 00:00), чтобы вы, скорее всего, поймали полночь точно.

Эта глава может оказаться полезной, используя некоторый тип уведомления для обновления:

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

Хотя я и сам оказался тем же самым решением, которое вы используете, это просто проще и надежнее.

Давайте будем гением компьютера.