CFPreferencesCopyAppValue не работает под iOS 4 - PullRequest
1 голос
/ 02 июля 2010

Я сохраняю имя пользователя в CFPreferencesCopyAppValue. В iOS 3.1.3 он работает, как и ожидалось, но в iOS4 он сохраняет его, пока приложение открыто, но как только оно закрыто (с помощью способности закрытия многозадачности), переменная не сохраняется, т.е. при повторном запуске приложения ее ноль.

У меня есть ощущение, что это может быть проблема с многозадачностью, так как приложение закрывается немного иначе, чем в iOS 3, и поэтому не сохраняет в закрытом приложении.

К сожалению, я не использую самую последнюю версию SDK, поэтому она может быть исправлена ​​в более поздних выпусках, но мне нужно, чтобы приложение работало под 3.1.3 и 4.0, и это последняя версия SDK с 3.1 .3 и 4.0 без необходимости иметь несколько установок. Так что, если это исправлено в финальной версии, я думаю, что мне нужно сделать несколько установок.

Любой свет по этому вопросу приветствуется.

1 Ответ

1 голос
/ 02 июля 2010

Это может быть полезно, если вы публикуете какой-то фактический код того, как вы пытаетесь обновить значение.Согласно документации CFPreferencesCopyAppValue:

Обратите внимание, что значения, возвращаемые из этой функции, являются неизменяемыми, даже если вы недавно установили значение с помощью изменяемого объекта.

И в документе Предпочтительные рекомендации указано, что вы должны использовать CFPreferencesSetAppValue для сохранения значения.

Обновление : я подозреваю, что отсутствуетчто-то в вашем сценарии и, возможно, мой ответ ниже - это , что вы делаете, поскольку вы упомянули, что ваш текущий код работает на 3.1.3.

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

Update2 : В документации CFPreferencesSetAppValue прямо упоминается:

Вы должны вызвать функцию CFPreferencesAppSynchronize, чтобычтобы ваши изменения были сохранены в постоянном хранилище

...