Я б погодився, що майже у кожному випадку немає нічого синтаксично неправильного з файлом plist. Функції Apple для завантаження та збереження даних плістів приділяють багато уваги та багато користі. Майже кожну помилку напевно знайдено та виправлено.
(Врахуйте, що списки використовуються для будь-яких речей, наприклад перетягування та буфер обміну, дозволу пісочниці для запуску програм, користувальницькі інтерфейси для кожного додатка та навіть який значок відображати у Finder. Було б неймовірно, якби у коді написання плістів сталася помилка, яка щойно трапилася, щоб викрутити файли уподобань для деяких додатків, але не будь-яка з цих речей!)
Файл уподобань програми (plist) просто зберігає деякі його структури даних в пам'яті на диску. Тож якщо у додатку є помилка, яка спричиняє неправильне встановлення, вона зберігається.
Часто, коли програма починає працювати недобре, ви можете просто вийти з нього та перезапустити. Це скидає багато його частин і може виправити проблему. Файли налаштувань перезавантажуються з диска, тому, якщо постраждала частина додатка була збережена в постійному налаштуваннях, перезавантаження програми не матиме ніякого впливу: погане значення просто завантажується знову. Ось при видаленні файла налаштувань може допомогти. Це як перезапуск програми, але для речей, які врятували.
Це може статися тому, що програмісти припускають, що дані, які має їх додаток, є правильними. Якщо колір може бути обраний лише користувачем, натиснувши на стандартне кольорове управління коліщатками, вони, ймовірно, не виконують додаткових робіт, щоб перевірити його правильність перед його використанням. (Для порівняння, додаток , як Safari робить тонни додаткової роботи перевірочної все, тому що він завантажує і запускає файли прямо через інтернет.)
Перевернення полягає в тому, що це майже завжди правильно, і набагато простіше, якщо припустити, що внутрішні значення є правильними. Мінус полягає в тому, що якщо погана цінність проникає якось (наприклад, користувач зробив щось абсолютно несподіване), речі можуть переходити до тих пір, поки все не буде скинуто.
-writeToFile:atomically:YES
("дані записуються у файл резервного копіювання, а потім - якщо припускати помилок - файл резервної копії перейменовано на вказане ім'я"). Функція POSIXrename()
гарантує, що файл буде існувати, "навіть якщо система повинна вийти з ладу в середині операції".