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 будет обрабатывать это сам)

Другие вопросы по тегам