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.
-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 POSIXrename()
menjamin file akan ada "bahkan jika sistem harus crash di tengah operasi".