Bagaimana file preferensi menjadi rusak?

10

Saya telah membaca beberapa artikel pemecahan masalah yang berbeda dan Tanya Jawab di mana pelakunya adalah file preferensi yang rusak untuk aplikasi atau proses. Biasanya solusinya adalah menghapus file preferensi buruk dan memungkinkan file preferensi default baru muncul setelah memulai ulang perangkat lunak apa pun yang mengalami kesalahan fungsi.

Bagaimana file preferensi menjadi rusak? Apakah ini hanya kesalahan membaca / menulis tingkat rendah, atau adakah kesalahan tingkat yang lebih tinggi terjadi dalam beberapa kasus? Apakah XML hanya salah format atau salah eja?

Saya percaya plutilbisa memberi tahu Anda jika ada kesalahan sintaksis dengan file tersebut, tetapi sekali lagi, bagaimana kesalahan itu diperkenalkan? Saya tidak jelas tentang sumber yang biasa untuk file yang rusak ini. Terima kasih.

wxs
sumber

Jawaban:

6

Ini bisa disebabkan oleh banyak hal, tapi saya percaya penyebab paling umum adalah di mana file sedang ditulis, dan aplikasi berhenti sebelum selesai menulis file. Ini dapat disebabkan oleh overhead sistem yang terlalu bagus untuk penulisan yang sukses pada saat itu.

Kesalahan perangkat keras dengan hard disk, atau memori juga dapat menyebabkan kesalahan data, tapi saya akan membayangkan ini akan menjadi masalah Anda saat ini.

AlanJC
sumber
4
Saya skeptis. Jika demikian, aplikasi pasti ditulis dengan sangat buruk, karena dibutuhkan 2 kata tambahan untuk menghindari bug yang jelas ini. Kode sampel Apple untuk menulis daftar menggunakan metode -writeToFile:atomically:YES("data ditulis ke file cadangan, dan kemudian - dengan asumsi tidak ada kesalahan terjadi - file cadangan diubah namanya menjadi nama yang ditentukan"). Fungsi POSIX rename()menjamin file akan ada "bahkan jika sistem harus crash di tengah operasi".
Ken
3

Saya berani bertaruh bahwa dalam hampir setiap kasus, secara sintaksis tidak ada yang salah dengan file plist. Fungsi Apple untuk memuat dan menyimpan data plist mendapatkan banyak perhatian dan banyak penggunaan. Hampir setiap bug pasti telah ditemukan dan diperbaiki sekarang.

(Pertimbangkan bahwa plist digunakan untuk semua jenis hal, seperti drag-n-drop dan clipboard, izin kotak pasir untuk meluncurkan aplikasi, antarmuka pengguna untuk setiap aplikasi, dan bahkan ikon mana yang ditampilkan di Finder. Akan luar biasa jika ada bug dalam kode penulisan plist yang kebetulan mengacaukan file preferensi untuk beberapa aplikasi, tetapi tidak ada hal-hal lain ini!)

File preferensi aplikasi (plist) hanya menyimpan beberapa struktur data dalam memori pada disk. Jadi, jika aplikasi memiliki bug yang menyebabkan sesuatu tidak disetel dengan benar, itu akan disimpan.

Seringkali ketika sebuah aplikasi mulai melakukan kesalahan, Anda bisa berhenti dan mulai lagi. Itu me-reset banyak bagian itu, dan dapat memperbaiki masalah. File preferensi dimuat ulang dari disk, jadi, jika bagian yang terpengaruh dari aplikasi disimpan dalam preferensi yang persisten, memulai ulang aplikasi tidak akan berdampak: nilai buruk hanya akan dimuat lagi. Saat itulah menghapus file preferensi dapat membantu. Ini seperti memulai ulang aplikasi, tetapi untuk hal-hal yang disimpan.

Hal-hal ini dapat terjadi karena programmer menganggap bahwa data yang dimiliki aplikasi mereka benar. Jika warna hanya dapat dipilih oleh pengguna mengklik pada kontrol roda warna standar, mereka mungkin tidak melakukan pekerjaan ekstra untuk memverifikasi bahwa itu benar sebelum menggunakannya. (Sebagai perbandingan, aplikasi seperti Safari melakukan banyak pekerjaan ekstra untuk memverifikasi semuanya, karena memuat dan menjalankan file langsung dari internet.)

Sisi positifnya adalah hampir selalu benar, dan jauh lebih mudah jika Anda menganggap bahwa nilai internal sudah benar. The downside adalah bahwa jika nilai buruk menyelinap masuk entah bagaimana (seperti pengguna melakukan sesuatu yang benar-benar tak terduga), semuanya bisa berantakan sampai semuanya diatur ulang.

Ken
sumber
Itu menarik. Anda mengatakan bahwa masalahnya umumnya khusus untuk aplikasi dan berkaitan dengan bug atau pengawasan yang memungkinkan nilai-nilai buruk diatur dan tidak diverifikasi sebelum digunakan nanti, tidak dengan masalah baca / tulis atau penanganan umum dari daftar. Namun saya masih merasa aneh bahwa sesuatu yang biasa (dan resmi) sebagai Dock ( apple.stackexchange.com/questions/33950/… ) akan memiliki masalah, meskipun mungkin itu pengecualian dan benar-benar kesalahan baca / tulis.
wxs
walker: Jika seseorang memiliki salah satu file daftar Dock rusak ini, mudah untuk memeriksa. Uang saya masih ada di bug di app (System Preferences atau Dock), bukan kode plist.
Ken
1

Sebagai warga senior yang cacat teknologi, saya menemukan File Preferensi iTunes saya rusak dan menyebabkan perjanjian lisensi muncul setiap kali saya membuka iTunes. Plus, semua preferensi saya harus diatur ulang. Saya percaya jawaban di atas benar, karena tepat sebelum saya memiliki masalah ini, saya dipaksa untuk melakukan shutdown paksa komputer saya (masalah listrik di daerah) dan me-reboot / setengah me-reboot beberapa kali. Aplikasi dihentikan sebelum instruksi / penulisan selesai. Tetapi perbaikan untuk menelurkan file preferensi iTunes baru ditunjukkan secara online dan sangat mudah dilakukan. Itu memperbaiki masalah.

Bob Foss
sumber