Come vengono danneggiati i file delle preferenze?


10

Ho letto alcuni diversi articoli per la risoluzione dei problemi e domande e risposte in cui il colpevole è un file delle preferenze danneggiato per un'applicazione o un processo. In genere, la soluzione consiste nell'eliminare il file delle preferenze errato e consentire la generazione di un nuovo file delle preferenze predefinito al riavvio di qualsiasi software che si comportava male.

Come viene danneggiato un file delle preferenze? Si tratta semplicemente di un errore di lettura / scrittura di basso livello o in alcuni casi si verifica un errore di livello superiore? È solo XML malformato o errato?

Credo che plutilpotrei dirti se c'è un errore sintattico con il file, ma ancora, come è stato introdotto l'errore? Non sono chiaro sulla solita fonte di questi file corrotti. Grazie.

Risposte:


6

Può essere causato da un gran numero di cose, ma credo che la causa più comune sia dove il file viene scritto e l'applicazione termina prima che abbia finito di scrivere il file. Ciò potrebbe essere causato da sovraccarichi di sistema troppo grandi per una scrittura riuscita in quel momento.

Anche errori hardware con il disco rigido o la memoria potrebbero causare errori nei dati, ma immagino che al momento questi sarebbero i problemi minori.


4
Sono scettico In tal caso, l'app deve essere stata scritta in modo molto scadente, dal momento che occorrono letteralmente 2 parole extra per evitare questo ovvio bug. Il codice di esempio di Apple per la scrittura di un plist utilizza il metodo -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"). La rename()funzione POSIX garantisce che il file esisterà "anche se il sistema dovesse arrestarsi in modo anomalo durante l'operazione".
Ken,

3

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.


Interessante. Stai dicendo che il problema è generalmente specifico dell'app e ha a che fare con un bug o una svista che consente di impostare e non verificare valori errati prima dell'uso successivo, non con qualsiasi lettura / scrittura o gestione generale del plist. Mi sembra comunque strano che qualcosa di così comune (e ufficiale) come Dock ( apple.stackexchange.com/questions/33950/… ) avrebbe un problema, anche se forse si tratta di un'eccezione e in realtà è un errore di lettura / scrittura.
wxs

walker: se qualcuno ha uno di questi file corrotti del plist Dock, è facile da controllare. I miei soldi sono ancora su un bug nell'app (Preferenze di Sistema o Dock), non sul codice plist.
Ken,

1

In quanto anziano anziano con problemi di tecnologia, ho scoperto che il mio file delle preferenze di iTunes era corrotto e provocavo l'accordo di licenza ogni volta che ho aperto iTunes. Inoltre, tutte le mie preferenze hanno dovuto essere ripristinate. Credo che le risposte di cui sopra siano corrette, dato che poco prima ho avuto questo problema, sono stato costretto a fare arresti forzati del mio computer (problemi elettrici nell'area) e riavviare / riavviare la metà più volte. Le domande sono terminate prima che le istruzioni / la scrittura fossero complete. Ma la correzione per generare un nuovo file delle preferenze di iTunes è stata mostrata online e molto facile da fare. Risolve il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.