2013-10-07 6 views
7

Sto lavorando a un'applicazione Mac OS X sviluppata per Mountain Lion. L'app esegue alcune attività di configurazione la prima volta che viene eseguita. Quindi imposta una bandiera in [NSUserDefaults standardUserDefaults]; nelle esecuzioni successive l'app controlla se questo flag è impostato e non esegue queste attività di configurazione della prima volta se è impostato.Dove NSUserDefaults memorizza i dati su Mac OS X?

Su Mountain Lion, sono stato in grado di eliminare il file ~/Library/Preferences/bundleid.plist per eliminare tutto dall'archivio memorizzato in NSUserDefaults. Tuttavia, nelle versioni più recenti di Mac OS X, quando l'app viene eseguita non crea nemmeno quel file. Ho verificato che sta salvando i dati correttamente su NSUserDefaults controllando i valori provenienti da [[NSUserDefaults standardUserDefaults] objectForKey:@"foo"] nel debugger.

Qualcuno può indicarmi la giusta direzione su come eliminare le impostazioni della mia app che sono memorizzate in NSUserDefaults?

+1

Mavericks è ancora sotto NDA, quindi dubito che qualcuno possa rispondere direttamente alla tua domanda. Detto questo, hai provato a usare fs_usage (uno strumento disponibile in tutte le versioni di OS X) per vedere dove l'app sta cercando di salvare il plist? – iccir

+0

Whoops, my bad - Ho rimosso i riferimenti a Mavericks. – Greg

+0

Immagino che questo sia sicuro, tuttavia: https://devforums.apple.com/it/message/894120 –

risposta

18

Mavericks non è ancora stato rilasciato, quindi sto ignorando quella parte della domanda. Dovresti chiederlo nei forum degli sviluppatori se vuoi una risposta specifica di Mavericks.

Indipendentemente dalla versione di OS X, il modo corretto per eliminare un dominio di default è con defaults delete bundleid o its programmatic equivalent. ~/Library/Preferences è un dettaglio di implementazione. Gli elenchi in esso contenuti non contengono sempre le informazioni più recenti. Prima di Mountain Lion, le modifiche predefinite vengono memorizzate in buffer nelle singole applicazioni fino al loro synchronize; in Mountain Lion e successivamente, vengono mantenute in memoria nei processi cfprefsd e scaricate su disco pigramente.

Vedere Core Foundation release notes for 10.8 per ulteriori informazioni.

Aggiornamento 2016: una guida corrente allo stato di NSUserDefaults è here.