Как получить обновление NSUserDefault на iOS 4?

Я разрабатываю приложение для iPhone, я встречаюсь с проблемой на iOS4 из-за много задачи.

Этому приложению определили настройки по умолчанию в Settings.bundle. Если я запускаю свое приложение затем, я оставил его (таким образом, оно идет в фоновом режиме). Я изменю настройки и перезапускаю приложение (оно выходит из резервного устройства и метода: applicationDidBecomeActive () называют).

Значения в NSUserDefault не являются обновлениями, но когда я оставляю приложение и перезапуск. Значения хороши.

Кто-то испытывает ту же проблему как я? То, что я делаю что-то не так?

Спасибо за Ваш совет / справка.

9
задан Douwe Maan 7 July 2010 в 13:58
поделиться

2 ответа

У меня была та же проблема, что и у вас, и я обошел ее, позвонив

[[NSUserDefaults standardUserDefaults] synchronize];

в applicationDidBecomeActive.

По какой-то причине объект [NSUserDefaults standardUserDefaults], к которым вы можете получить доступ в приложении, не синхронизирован с фактическими файлами plist, резервными его, когда приложение снова становится активным после приостановки. Вызов метода synchronize принудительно выполняет синхронизацию.

20
ответ дан 4 December 2019 в 09:12
поделиться

Вам нужно следить за изменениями настроек. Лучший способ сделать это - установить слушатель там, где он вам нужен:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(settingsChanged) name:NSUserDefaultsDidChangeNotification object:nil];

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

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

3
ответ дан 4 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: