Подтвердить что ты не робот

Удаление файла plist не поддерживает reset приложение на macOS 10.9+

При разработке приложения Cocoa в 10.9 я заметил, что если я перейду к ~/Library/Preferences и удалю файл plist для моего приложения (до reset it), то в следующем построении и запуске приложение ведет себя так, как будто файл plist никогда не удалялся вообще.

Мне потребовалось много времени, чтобы выяснить, почему это происходит, и я не видел вопроса/ответа об этом на SO, поэтому я пишу этот вопрос и сам отвечаю на него, чтобы помочь другим.

4b9b3361

Ответ 1

В 10.9 система делает более надежное "кэширование" предпочтений. После удаления файла plist я активировал Activity Monitor и принудительно убил процесс "cfprefsd". Будьте осторожны: существует несколько процессов с запуском этого имени, и вы хотите только убить того, что работает под своим собственным пользователем; не убивайте того, кто работает от имени root.

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

Изменить: Как сообщается ниже, использование defaults delete [your bundle identifier] в командной строке также устраняет проблему кэширования. Я имел смешанный успех с этим.

Ответ 2

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

killall -u $USER cfprefsd

Ответ 3

В терминале:

defaults delete com.somecompany.someapp

Ответ 4

Кстати, я только что выпустил графическое приложение, которое может быть более удобным, чем работа с командой по умолчанию:

http://www.tempel.org/PrefsEditor

Он работает практически так же, как и редактор Xcode plist, но напрямую влияет на настройки пользовательского приложения.

Чтобы удалить все ваши префы, вы можете открыть свои префы в редакторе Prefs, Select All, а затем удалить их с помощью клавиши Backspace или Delete, и они сразу исчезнут.

Однако для этой конкретной задачи использование defaults delete может быть еще быстрее, особенно если вы поместите команду в текстовый файл, заканчивающийся на ".command", и сделайте его исполняемым (с chmod +x). Затем вы можете дважды щелкнуть его в Finder, чтобы выполнить его.