Я разрабатываю приложение для iPhone, я встречаюсь с проблемой на iOS4 из-за много задачи.
Этому приложению определили настройки по умолчанию в Settings.bundle. Если я запускаю свое приложение затем, я оставил его (таким образом, оно идет в фоновом режиме). Я изменю настройки и перезапускаю приложение (оно выходит из резервного устройства и метода: applicationDidBecomeActive () называют).
Значения в NSUserDefault не являются обновлениями, но когда я оставляю приложение и перезапуск. Значения хороши.
Кто-то испытывает ту же проблему как я? То, что я делаю что-то не так?
Спасибо за Ваш совет / справка.
У меня была та же проблема, что и у вас, и я обошел ее, позвонив
[[NSUserDefaults standardUserDefaults] synchronize];
в applicationDidBecomeActive
.
По какой-то причине объект [NSUserDefaults standardUserDefaults]
, к которым вы можете получить доступ в приложении, не синхронизирован с фактическими файлами plist, резервными его, когда приложение снова становится активным после приостановки. Вызов метода synchronize
принудительно выполняет синхронизацию.
Вам нужно следить за изменениями настроек. Лучший способ сделать это - установить слушатель там, где он вам нужен:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(settingsChanged) name:NSUserDefaultsDidChangeNotification object:nil];
Единственное, в чем вам нужно убедиться, это то, что вы не изменяете какие-либо настройки в вашем слушателе, иначе вы получите бесконечная рекурсия без добавления немного дополнительной логики.
Я бы воздержался от синхронизации, потому что по своему опыту я обнаружил, что мне нужно запускать ее дважды. Но это случайное поведение. Слушатель уведомит вас, когда новые настройки будут перечитаны из магазина.