Intereting Posts
Проблема с производительностью iCarousel на iPad Как установить учетные данные Basecamp с помощью Apple IOS для iPad Havok Physics Engine – Android iCarousel – viewForItemAtIndex загружает все индексы при запуске Всплывающее окно Phonegap 2.5.0 сдвигается во время отображения На iOS, что такое хороший способ реализовать панель слайдов с виджетами? Как решить проблемы с файлами libpods, которые пропадают из imgly-sdk-ios? Объединение двух инфраструктур iOS в один Можно ли вычесть сумму за ежемесячное использование приложений через покупку In-App у пользователя / клиента? Быстрое расширение действия NSString? Получить текущее значение громкости звонка на iPhone UITableViewController оставляет место в верхней части страницы только после ухода и возвращения в UITableViewController Создание изображения в рамке прямоугольника, помещенного в UIImageview Как выполнить селектор с аргументом? Локализация приложения iOS

Являются ли текущие расширения Ivars постоянными?

Я пишу код для нового виджета iOS 8 Today, но я заметил, что каждый раз, когда widgetPerformUpdateWithCompletionHandler: называется мои ivars (созданные из @property ), сбрасываются. Это похоже на каждый раз, когда создается новый экземпляр контроллера.

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

Это обычное поведение или ошибка? Должен ли я сохранять свои простые номера в NSUserDefaults вместо того, чтобы полагаться на данные на основе памяти, которые сбрасываются?

Расширение не будет выполняться между вызовами widgetPerformUpdateWithCompletionHandler: Этот метод вызывается, когда iOS запускает ваше расширение в фоновом режиме для получения новых данных. Затем ОС захватывает изображение вашего расширения (для чего должен выполняться обработчик завершения) в качестве своего рода «экрана запуска» для вашего расширения (когда центр уведомлений запускается, ваше расширение недоступно сразу, поэтому оно показывает изображение до тех пор, пока это). Вероятно, вы захотите использовать NSUserDefaults (или другой метод) для хранения кэшированных данных для загрузки в ожидании обновления данных с сервера.

Другими словами, ОС будет запускать ваше приложение периодически, чтобы вы могли получать новые данные, чтобы пользователь всегда видел обновленные данные в центре уведомлений. Вы должны кэшировать эти данные в этом методе, чтобы вы могли быстрее загружать свое расширение, когда оно запущено для центра уведомлений. Здесь все обсуждается.