Як файли налаштувань пошкоджуються?


10

Я прочитав кілька різних статей щодо усунення несправностей і питань, де винуватцем є пошкоджений файл переваг програми чи процесу. Як правило, рішення полягає в тому, щоб видалити файл поганих налаштувань і дозволити породження нового файлу налаштувань за замовчуванням після перезавантаження будь-якого програмного забезпечення, яке не поводилось.

Як файл налаштувань пошкоджується? Це просто помилка читання / запису низького рівня, або в деяких випадках виникає помилка вищого рівня? Це просто неправильна форма чи неправильно написана XML?

Я думаю, plutilміг би сказати, чи є синтаксична помилка з файлом, але знову ж таки, як помилка була введена? Мені незрозуміло звичайне джерело цих пошкоджених файлів. Дякую.

Відповіді:


6

Це може бути викликано великою кількістю речей, але я вважаю, що найпоширенішою причиною є те, де файл записується, а додаток припиняється до того, як він закінчить писати файл. Це може бути спричинене тим, що накладні витрати системи занадто великі для того, щоб успішно писати.

Помилки апаратного забезпечення на жорсткому диску чи пам'яті також можуть спричинити помилки в даних, але я думаю, що це було б найменше ваших проблем до цього часу.


4
Я скептично ставлюсь. Якщо це колись трапляється, додаток, мабуть, було написано дуже погано, оскільки для уникнення цієї очевидної помилки потрібно буквально 2 зайвих слова. Зразок коду Apple для написання списку використовує метод -writeToFile:atomically:YES("дані записуються у файл резервного копіювання, а потім - якщо припускати помилок - файл резервної копії перейменовано на вказане ім'я"). Функція POSIX rename()гарантує, що файл буде існувати, "навіть якщо система повинна вийти з ладу в середині операції".
Кен

3

Я б погодився, що майже у кожному випадку немає нічого синтаксично неправильного з файлом plist. Функції Apple для завантаження та збереження даних плістів приділяють багато уваги та багато користі. Майже кожну помилку напевно знайдено та виправлено.

(Врахуйте, що списки використовуються для будь-яких речей, наприклад перетягування та буфер обміну, дозволу пісочниці для запуску програм, користувальницькі інтерфейси для кожного додатка та навіть який значок відображати у Finder. Було б неймовірно, якби у коді написання плістів сталася помилка, яка щойно трапилася, щоб викрутити файли уподобань для деяких додатків, але не будь-яка з цих речей!)

Файл уподобань програми (plist) просто зберігає деякі його структури даних в пам'яті на диску. Тож якщо у додатку є помилка, яка спричиняє неправильне встановлення, вона зберігається.

Часто, коли програма починає працювати недобре, ви можете просто вийти з нього та перезапустити. Це скидає багато його частин і може виправити проблему. Файли налаштувань перезавантажуються з диска, тому, якщо постраждала частина додатка була збережена в постійному налаштуваннях, перезавантаження програми не матиме ніякого впливу: погане значення просто завантажується знову. Ось при видаленні файла налаштувань може допомогти. Це як перезапуск програми, але для речей, які врятували.

Це може статися тому, що програмісти припускають, що дані, які має їх додаток, є правильними. Якщо колір може бути обраний лише користувачем, натиснувши на стандартне кольорове управління коліщатками, вони, ймовірно, не виконують додаткових робіт, щоб перевірити його правильність перед його використанням. (Для порівняння, додаток , як Safari робить тонни додаткової роботи перевірочної все, тому що він завантажує і запускає файли прямо через інтернет.)

Перевернення полягає в тому, що це майже завжди правильно, і набагато простіше, якщо припустити, що внутрішні значення є правильними. Мінус полягає в тому, що якщо погана цінність проникає якось (наприклад, користувач зробив щось абсолютно несподіване), речі можуть переходити до тих пір, поки все не буде скинуто.


Це цікаво. Ви говорите, що проблема, як правило, пов’язана з додатком і пов’язана з помилкою або наглядом, що дозволяє встановлювати погані значення та не перевіряти їх перед подальшим використанням, а не з читанням / записом чи загальним поводженням із списком. Мені все ще здається дивним, хоча щось таке спільне (і офіційне), як Dock ( apple.stackexchange.com/questions/33950/… ), мало б проблему, хоча, можливо, це виняток і справді є помилкою читання / запису.
wxs

Уокер: Якщо хтось має один із цих пошкоджених файлів плістів Dock, його легко перевірити. Мої гроші все ще знаходяться на помилці в додатку (System Preferences або Dock), а не в коді plist.
Кен

1

Будучи технічно оскарженим старшим громадянином, я виявив, що файл налаштувань iTunes був пошкоджений і спричинив появу ліцензійної угоди кожного разу, коли я відкривав iTunes. Плюс, усі мої вподобання довелося скинути. Я вважаю, що наведені вище відповіді є правильними, так як перед тим, як у мене виникло це питання, я змушений був робити примусові відключення комп'ютера (електричні проблеми в цьому районі) та перезавантажувати / наполовину перезавантажувати кілька разів. Заявки припиняються до завершення інструкцій / написання. Але виправлення для нересту нового файлу налаштувань iTunes було показано в Інтернеті, і це дуже легко зробити. Це вирішило проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.