Hemen hemen her durumda, plist dosyasıyla sözdizimsel olarak yanlış bir şey olmadığını iddia ediyorum. Apple'ın plist verilerini yükleme ve kaydetme işlevleri çok dikkat çekiyor ve çok kullanılıyor. Hemen hemen her hata şimdiye kadar bulundu ve düzeltildi.
(Plist'lerin sürükle-bırak ve pano, uygulamaları başlatmak için sanal alan izinleri, her uygulama için kullanıcı arayüzleri ve hatta Finder'da hangi simgenin görüntüleneceği gibi her türlü şey için kullanıldığını düşünün. plist yazma kodunda bazı uygulamalar için tercih dosyalarını bozan bir hata vardı, ancak bu diğer şeylerin hiçbirini değil!)
Bir uygulamanın tercih dosyası (plist), bellek içi veri yapılarının bazılarını diskte depolar. Dolayısıyla, uygulamada bir şeyin yanlış ayarlanmasına neden olan bir hata varsa, kaydedilir.
Genellikle bir uygulama hatalı davranmaya başladığında, uygulamayı bırakıp yeniden başlatabilirsiniz. Bu, birçok parçasını sıfırlar ve sorunu çözebilir. Bununla birlikte, tercih dosyaları diskten yeniden yüklenir, bu nedenle uygulamanın etkilenen kısmı kalıcı bir tercihe kaydedildiyse, uygulamayı yeniden başlatmanın bir etkisi olmaz: kötü değer tekrar yüklenir. O zaman tercih dosyasını silmek yardımcı olabilir. Uygulamayı yeniden başlatmak gibi, ancak kaydedilen şeyler için.
Bunlar, programcılar uygulamalarının sahip olduğu verilerin doğru olduğunu varsaydığı için olabilir. Bir renk yalnızca standart bir renk tekerleği kontrolünü tıklayan kullanıcı tarafından seçilebiliyorsa, muhtemelen kullanmadan önce doğru olduğunu doğrulamak için ekstra bir iş yapmazlar. (Buna karşılık, Safari gibi bir uygulama , dosyaları doğrudan internetten yükleyip çalıştırdığı için her şeyi doğrulayan bir ton ekstra iş yapar .)
Bunun tersi, neredeyse her zaman doğru olmasıdır ve dahili değerlerin doğru olduğunu varsayarsanız çok daha kolaydır. Dezavantajı, kötü bir değer bir şekilde gizlenirse (kullanıcı tamamen beklenmedik bir şey yaptığında), her şey sıfırlanana kadar işler haywire gidebilir.
-writeToFile:atomically:YES
("veriler bir yedekleme dosyasına yazılır ve sonra - hata oluşmazsa - yedekleme dosyası belirtilen adla yeniden adlandırılır"). POSIXrename()
işlevi, dosyanın "sistem işlemin ortasında çökse bile" dosyanın var olacağını garanti eder.