Удаление файла plist не поддерживает reset приложение на macOS 10.9+
При разработке приложения Cocoa в 10.9 я заметил, что если я перейду к ~/Library/Preferences
и удалю файл plist для моего приложения (до reset it), то в следующем построении и запуске приложение ведет себя так, как будто файл plist никогда не удалялся вообще.
Мне потребовалось много времени, чтобы выяснить, почему это происходит, и я не видел вопроса/ответа об этом на SO, поэтому я пишу этот вопрос и сам отвечаю на него, чтобы помочь другим.
Ответы
Ответ 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, чтобы выполнить его.