Как обрабатывать временные события на iOS? - PullRequest
7 голосов
/ 15 ноября 2011

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

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

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

Ответы [ 5 ]

13 голосов
/ 16 ноября 2011

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

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

4 голосов
/ 15 ноября 2011

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

1 голос
/ 15 ноября 2011

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

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

1 голос
/ 15 ноября 2011

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

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

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

1 голос
/ 15 ноября 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...