NSUserDefaults и песочница под Lion - PullRequest
       27

NSUserDefaults и песочница под Lion

4 голосов
/ 14 февраля 2012

Перемещение одного из моих проектов для поддержки песочницы в соответствии с требованиями Apple.Я использую UserDefaults так:

[[NSUserDefaults standardUserDefaults] setObject:@(myNumber) forKey:myNumberKey];
[[NSUserDefaults standardUserDefaults] synchronize];

Все работает как положено, пока я не включу песочницу.Если у меня включена песочница, приложение создает файл блокировки в своем каталоге песочницы (.plist.lockfile) и не создает фактический файл .plist.

Что я делаю не так и как мне сохранить мои настройки в UserDefaults в среде песочницы?

Обновление: установлен свежий 10.7.3 с последним Xcode на отдельном Mac - тот же проект компилируетсяи отлично работает с включенной песочницей.

Также я попытался запустить этот проект на моем Mac, где песочница не работает под другой учетной записью пользователя (только что созданной) с точно такими же результатами - нет.На данный момент я думаю, что проблема заключается в конфигурации системы на этом конкретном Mac.Вопрос, однако, - можно ли предположить, что я единственный с этой странной проблемой?Наверное, нет ...

1 Ответ

2 голосов
/ 14 февраля 2012

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

Есть ли запись в консоли, когда это происходит? Какое возвращаемое значение -synchronize?

(за исключением: в общем случае -synchronize не нужен и просто замедлит работу вашего приложения, NSUserDefaults сам справится с этим)

...