objective-c macos cocoa plist

objective c - Eliminar el archivo plist no restablece la aplicación en macOS 10.9+



objective-c cocoa (4)

Descubrí que matar el proceso de usuario cfprefsd va a purgar el caché, por lo que se mantendrán los cambios

killall -u $USER cfprefsd

Al desarrollar una aplicación Cocoa en 10.9, he notado que si voy a ~/Library/Preferences y elimino el archivo plist de mi aplicación (para restablecerlo), en la próxima compilación y ejecución, la aplicación se comporta como si el archivo plist nunca se ha eliminado en absoluto.

Me llevó mucho tiempo rastrear por qué sucede esto y no vi una pregunta / respuesta al respecto, así que escribo esta pregunta y la respondo para ayudar a otros.


En 10.9, el sistema está haciendo un "caché" de preferencias más robusto. Después de eliminar el archivo plist, activé el Monitor de actividad y eliminé forzosamente el proceso "cfprefsd". Tenga cuidado: hay varios procesos con este nombre en ejecución y solo quiere matar el que se ejecuta bajo su propio usuario; no mates al que se ejecuta como root

Hacer esto parece eliminar el caché de preferencias y en la próxima ejecución de mi aplicación, obtengo un inicio prístino desde cero.

Editar: como se informa a continuación, al usar los defaults delete [your bundle identifier] en la línea de comando para eliminar el problema del almacenamiento en caché. He tenido un éxito desigual con esto.


En la terminal:

defaults delete com.somecompany.someapp


Por cierto, acabo de lanzar una aplicación GUI que puede ser más conveniente que trabajar con el comando predeterminado:

http://www.tempel.org/PrefsEditor

Funciona prácticamente igual que el editor plural de Xcode, pero afecta las preferencias de la aplicación del usuario directamente.

Para eliminar todas sus preferencias, puede abrir sus preferencias en mi Editor de Prefs, Seleccionar todo, luego eliminarlas con la tecla Retroceso o Eliminar, y al instante desaparecen.

Sin embargo, para esta tarea en particular, la defaults delete puede ser aún más rápida, especialmente si coloca el comando en un archivo de texto que termina en ".command" y lo hace ejecutable (con chmod +x ). Luego puede hacer doble clic desde el Finder para ejecutarlo.