Scommetto che in quasi tutti i casi, non c'è nulla di sintatticamente sbagliato nel file plist. Le funzioni di Apple per il caricamento e il salvataggio dei dati di plist attirano molta attenzione e molto uso. Quasi ogni bug è stato sicuramente trovato e risolto ormai.
(Considera che i plist sono usati per tutti i tipi di cose, come il trascinamento della selezione e gli appunti, le autorizzazioni sandbox per l'avvio di app, le interfacce utente per ogni app e persino quale icona visualizzare nel Finder. Sarebbe incredibile se c'è stato un bug nel codice di scrittura del plist che è appena successo a rovinare i file delle preferenze per alcune app, ma nessuna di queste altre cose!)
Il file delle preferenze di un'app (plist) sta semplicemente archiviando alcune delle sue strutture di dati in memoria sul disco. Quindi, se l'app ha un bug che causa l'impostazione errata di qualcosa, viene salvata.
Spesso quando un'app inizia a comportarsi male, puoi semplicemente uscire e riavviare. Ciò ripristina molte parti di esso e può risolvere il problema. I file delle preferenze vengono ricaricati dal disco, quindi, se la parte interessata dell'app è stata salvata in una preferenza persistente, il riavvio dell'app non avrà alcun impatto: il valore errato verrà semplicemente caricato di nuovo. Questo può aiutare quando si elimina il file delle preferenze. È come riavviare l'app, ma per le cose che sono state salvate.
Queste cose possono accadere perché i programmatori presumono che i dati della loro app siano corretti. Se un colore può essere scelto solo dall'utente facendo clic su un controllo standard della ruota dei colori, probabilmente non esegue alcun lavoro aggiuntivo per verificare che sia corretto prima di utilizzarlo. (In confronto, un'app come Safari fa un sacco di lavoro extra per verificare tutto, perché carica ed esegue i file direttamente da Internet.)
Il lato positivo è che è quasi sempre corretto ed è molto più semplice se si presume che i valori interni siano corretti. Il rovescio della medaglia è che se un valore negativo si insinua in qualche modo (come l'utente ha fatto qualcosa di totalmente inaspettato), le cose possono andare in tilt fino a quando tutto viene ripristinato.
-writeToFile:atomically:YES
("i dati vengono scritti in un file di backup e quindi - presupponendo che non si verifichino errori - il file di backup viene rinominato con il nome specificato"). Larename()
funzione POSIX garantisce che il file esisterà "anche se il sistema dovesse arrestarsi in modo anomalo durante l'operazione".