Vraag Het verwijderen van plist-bestand stelt de app niet opnieuw in op macOS 10.9+


Tijdens het ontwikkelen van een Cocoa-applicatie op 10.9, heb ik gemerkt dat als ik ga naar ~/Library/Preferences en verwijder het plist-bestand voor mijn app (om het opnieuw in te stellen), gedraagt ​​de app zich bij de volgende build-and-run alsof het plist-bestand helemaal niet is verwijderd.

Het kostte me veel tijd om te achterhalen waarom dit gebeurde en ik zag geen vraag / antwoord hierover op SO, dus ik schrijf deze vraag en beantwoord deze zelf om anderen te helpen.


39
2017-10-10 18:54


oorsprong


antwoorden:


Op 10.9 doet het systeem wat meer robuuste "caching" van voorkeuren. Nadat ik het plist-bestand had verwijderd, activeerde ik Activity Monitor en forceerde ik het proces "cfprefsd". Wees voorzichtig: er zijn meerdere processen met deze naam actief en je wilt alleen degene die onder je eigen gebruiker draait doden; dood degene die als root draait niet.

Hierdoor lijkt de voorkeuren-cache te worden leeggemaakt en bij de volgende keer dat mijn app wordt uitgevoerd, krijg ik een onberispelijke start-from-scratch-lancering.

Bewerken: zoals hieronder vermeld, met behulp van defaults delete [your bundle identifier] op de opdrachtregel lijkt ook het probleem met caching te elimineren. Ik heb hier een gemengd succes mee gehad.


55
2017-10-10 18:54



Ik kwam erachter dat het cfprefsd doden van het gebruikersproces de cache zal reflush, zodat uw wijzigingen worden bewaard

killall -u $USER cfprefsd


12
2017-12-15 17:24



In terminal:

defaults delete com.somecompany.someapp


12
2018-05-26 20:52



Ik heb zojuist een GUI-app uitgebracht die handiger is dan werken met de standaardinstellingen:

http://www.tempel.org/PrefsEditor

Het werkt vrijwel hetzelfde als de plist-editor van Xcode, maar heeft rechtstreeks invloed op de app-voorkeuren van de gebruiker.

Om al uw prefs te verwijderen, kunt u uw prefs openen in mijn Prefs Editor, Alles selecteren en ze vervolgens verwijderen met de Backspace of Delete-toets, en ze zijn meteen allemaal weg.

Voor deze specifieke taak echter gebruiken defaults delete kan nog steeds sneller zijn, vooral als je het commando in een tekstbestand zet dat eindigt op ".command", en het uitvoerbaar maakt (met chmod +x). Vervolgens kunt u dubbelklikken vanuit de Finder om het uit te voeren.


9
2017-12-14 20:50