NSUserDefaults и песочница под Lion
Перемещение одного из моих проектов для поддержки песочницы в соответствии с требованиями Apple. Я использую UserDefaults так:
[[NSUserDefaults standardUserDefaults] setObject:@(myNumber) forKey:myNumberKey];
[[NSUserDefaults standardUserDefaults] synchronize];
Все работает как положено, пока я не включу песочницу. Если у меня включена песочница, приложение создает файл блокировки в своем каталоге песочницы ( .plist.lockfile) и не создает фактический файл.plist.
Что я делаю не так и как мне сохранить мои настройки в UserDefaults в среде песочницы?
Обновление: Установлен свежий 10.7.3 с последним Xcode на отдельном Mac - тот же проект компилируется и отлично работает с включенной песочницей.
Также я попытался запустить этот проект на моем Mac, где песочница не работает под другой учетной записью пользователя (только что созданной) с точно такими же результатами - нет. На данный момент я думаю, что проблема заключается в конфигурации системы на этом конкретном Mac. Вопрос, однако, - можно ли предположить, что я единственный с этой странной проблемой? Возможно нет...
1 ответ
Это должно работать нормально. Если система настроек способна создать файл блокировки, это означает, что ваше приложение имеет соответствующие права для создания файлов в этом каталоге и правильно проверило место, где оно должно их разместить. Поэтому что-то еще должно идти не так.
Есть ли запись в консоли, когда это происходит? Какое возвращаемое значение -synchronize?
(кроме: в общем случае -synchronize не нужен и просто сделает ваше приложение медленнее, NSUserDefaults будет обрабатывать это сам)