ฉันจะเดิมพันว่าในเกือบทุกกรณีไม่มีอะไรผิด syntactically กับไฟล์ plist ฟังก์ชั่นของ Apple สำหรับการโหลดและบันทึกข้อมูล plist ได้รับความสนใจและการใช้งานมากมาย เกือบทุกข้อผิดพลาดได้รับการค้นพบและแก้ไขโดยในตอนนี้
(พิจารณาว่ามีการใช้ plists สำหรับทุกสิ่งเช่น drag-n-drop และคลิปบอร์ด, สิทธิ์ sandbox สำหรับเปิดแอพ, ส่วนต่อประสานผู้ใช้สำหรับทุกแอพและแม้แต่ไอคอนที่จะแสดงใน Finder มันน่าเหลือเชื่อถ้า มีข้อผิดพลาดในรหัสการเขียนแบบ plist ซึ่งเพิ่งเกิดขึ้นเพื่อไขไฟล์การตั้งค่าสำหรับแอพบางตัว แต่ไม่ใช่สิ่งอื่นใด!)
ไฟล์การกำหนดค่าตามความชอบของแอพพลิเคชั่น (Plist) เป็นเพียงการจัดเก็บโครงสร้างข้อมูลในหน่วยความจำบนดิสก์ ดังนั้นหากแอปมีข้อผิดพลาดที่ทำให้บางสิ่งบางอย่างถูกตั้งค่าไม่ถูกต้องก็จะได้รับการบันทึก
บ่อยครั้งที่แอปเริ่มทำงานผิดปกติคุณสามารถออกจากแอปแล้วรีสตาร์ท ซึ่งรีเซ็ตหลายส่วนและอาจแก้ไขปัญหาได้ ไฟล์การตั้งค่าจะถูกโหลดซ้ำจากดิสก์ดังนั้นหากส่วนที่ได้รับผลกระทบของแอปถูกบันทึกไว้ในการตั้งค่าแบบถาวรการรีสตาร์ทแอพจะไม่มีผลกระทบ: ค่าที่ไม่ดีจะถูกโหลดอีกครั้ง นั่นคือเมื่อการลบไฟล์การตั้งค่าสามารถช่วย มันเหมือนกับการรีสตาร์ทแอป แต่สำหรับสิ่งที่ได้รับการบันทึก
สิ่งเหล่านี้สามารถเกิดขึ้นได้เนื่องจากโปรแกรมเมอร์คิดว่าข้อมูลของแอพนั้นถูกต้อง หากผู้ใช้สามารถเลือกสีได้โดยการคลิกที่ตัวควบคุมวงล้อสีมาตรฐานพวกเขาอาจจะไม่ทำงานใด ๆ เพิ่มเติมเพื่อยืนยันว่ามันถูกต้องก่อนที่จะใช้ (ในการเปรียบเทียบแอปเช่น Safari ไม่ตันงานพิเศษตรวจสอบทุกอย่างเพราะมันโหลดไฟล์และวิ่งตรงออกอินเทอร์เน็ต.)
ข้อดีคือมันเกือบจะถูกต้องเสมอและจะง่ายกว่ามากถ้าคุณคิดว่าค่าภายในนั้นถูกต้อง ข้อเสียคือถ้าค่าที่ไม่ดีแอบอย่างใด (เช่นผู้ใช้ทำสิ่งที่ไม่คาดคิดโดยสิ้นเชิง) สิ่งที่สามารถไปยุ่งเหยิงจนกว่าทุกอย่างจะถูกรีเซ็ต
-writeToFile:atomically:YES
("ข้อมูลถูกเขียนลงในไฟล์สำรองแล้ว - โดยสมมติว่าไม่มีข้อผิดพลาดเกิดขึ้น - ไฟล์สำรองจะถูกเปลี่ยนชื่อเป็นชื่อที่ระบุ")rename()
ฟังก์ชั่นPOSIX รับประกันว่าไฟล์จะมีอยู่ "แม้ว่าระบบจะผิดพลาดในระหว่างการดำเนินการ"