44 votes

La suppression du fichier plist ne réinitialise pas l'application sur Mac OS 10.9 Mavericks et 10.10 Yosemite.

En développant une application Cocoa sous 10.9, j'ai remarqué que si je vais dans ~/Bibliothèque/Préférences et que je supprime le fichier plist de mon application (pour le réinitialiser), lors du prochain build-and-run, l'application se comporte comme si le fichier plist n'avait jamais été supprimé.

Il m'a fallu beaucoup de temps pour comprendre pourquoi cela se produit et je n'ai pas vu de question/réponse à ce sujet sur SO, alors j'écris cette question et j'y réponds moi-même pour aider les autres.

59voto

Bryan Points 1305

Sous 10.9, le système effectue une mise en cache plus robuste des préférences. Après avoir supprimé le fichier plist, j'ai lancé le moniteur d'activité et tué de force le processus "cfprefsd". Attention : plusieurs processus portant ce nom sont en cours d'exécution et vous ne voulez tuer que celui qui s'exécute sous votre propre utilisateur ; ne tuez pas celui qui s'exécute en tant que Root.

Cette opération semble purger le cache des préférences et, lors de l'exécution suivante de mon application, j'obtiens un lancement parfait à partir de zéro.

Edit : Comme indiqué ci-dessous, en utilisant defaults delete [your bundle identifier] à la ligne de commande semble également éliminer le problème de mise en cache. J'ai eu un succès mitigé avec cela.

14voto

Tom Andersen Points 3523

En terminal :

defaults delete com.somecompany.someapp

14voto

Pencilcheck Points 434

J'ai découvert que tuer le processus utilisateur cfprefsd reflue le cache, donc vos changements seront conservés.

killall -u $USER cfprefsd

10voto

Thomas Tempelmann Points 2849

BTW, je viens de publier une application GUI qui peut être plus pratique que de travailler avec la commande defaults :

http://www.tempel.org/PrefsEditor

Il fonctionne pratiquement de la même manière que l'éditeur plist de Xcode, mais affecte directement les préférences de l'application de l'utilisateur.

Pour supprimer toutes vos préférences, vous pouvez les ouvrir dans mon éditeur de préférences, les sélectionner toutes, puis les supprimer avec la touche Retour arrière ou Suppr, et elles disparaissent instantanément.

Cependant, pour cette tâche particulière, l'utilisation de defaults delete peut encore être plus rapide, surtout si vous placez la commande dans un fichier texte se terminant par ".command", et que vous le rendez exécutable (avec chmod +x ). Vous pouvez ensuite double-cliquer dessus dans le Finder pour l'exécuter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X