Я пишу код для нового виджета «Сегодня» в iOS 8, но заметил, что каждый раз, когда вызывается widgetPerformUpdateWithCompletionHandler:
, мои авары (созданные из @property
) сбрасываются. Это похоже на каждый раз, когда создается экземпляр нового контроллера представления.
Это делает невозможным сохранение данных о памяти между обновлениями виджета (пока он находится в фоне, например, и вызывается для обновления своего содержимого).
Это нормальное поведение или баг? Должен ли я сохранять свои простые числа в NSUserDefaults
вместо того, чтобы полагаться на данные из памяти, которые сбрасываются?
widgetPerformUpdateWithCompletionHandler:
. Этот метод вызывается, когда iOS запускает ваше расширение в фоновом режиме, чтобы вы могли получить новые данные. Затем ОС захватывает изображение вашего расширения (для этого предназначен обработчик завершения), чтобы показать его как своего рода экран запуска для вашего расширения (когда запускается центр уведомлений, ваше расширение недоступно сразу, поэтому он показывает изображение, пока оно есть). Скорее всего, вы захотите использоватьNSUserDefaults
для хранения кэшированных данных для загрузки в ожидании поступления обновленных данных с сервера. - person Andrew   schedule 09.10.2014