Przeczytałem kilka różnych artykułów na temat rozwiązywania problemów oraz pytania i odpowiedzi, w których sprawcą jest uszkodzony plik preferencji dla aplikacji lub procesu. Zazwyczaj rozwiązaniem jest usunięcie niepoprawnego pliku preferencji i zezwolenie na utworzenie nowego domyślnego pliku preferencji po zrestartowaniu dowolnego oprogramowania, które źle działało.
W jaki sposób plik preferencji ulega uszkodzeniu? Czy jest to po prostu błąd odczytu / zapisu niskiego poziomu, czy w niektórych przypadkach występuje błąd wyższego poziomu? Czy to po prostu źle sformułowany lub błędnie napisany kod XML?
Wydaje mi się, że mogę plutil
powiedzieć, czy w pliku występuje błąd składniowy, ale w jaki sposób błąd został wprowadzony? Nie mam pewności co do zwykłego źródła tych uszkodzonych plików. Dzięki.
-writeToFile:atomically:YES
(„dane są zapisywane w pliku kopii zapasowej, a następnie - przy założeniu braku błędów - nazwa pliku kopii zapasowej jest zmieniana na podaną nazwę”). Funkcja POSIXrename()
gwarantuje, że plik będzie istniał „nawet jeśli system ulegnie awarii w trakcie operacji”.Założę się, że w prawie każdym przypadku w pliku plist nie ma nic składniowego. Funkcje Apple do ładowania i zapisywania danych plist zyskują wiele uwagi i są bardzo użyteczne. Prawie każdy błąd został z pewnością znaleziony i naprawiony.
Plik preferencji aplikacji (plist) po prostu przechowuje niektóre struktury danych w pamięci na dysku. Więc jeśli aplikacja ma błąd, który powoduje, że coś jest ustawione nieprawidłowo, zostaje zapisana.
Często, gdy aplikacja zaczyna źle funkcjonować, możesz po prostu ją zamknąć i uruchomić ponownie. To resetuje wiele jego części i może rozwiązać problem. Pliki preferencji są ponownie ładowane z dysku, więc jeśli dotknięta część aplikacji została zapisana w stałej preferencji, ponowne uruchomienie aplikacji nie będzie miało wpływu: zła wartość zostanie ponownie załadowana. Wtedy pomocne może być usunięcie pliku preferencji. To jak ponowne uruchomienie aplikacji, ale dla rzeczy, które zostały zapisane.
Te rzeczy mogą się zdarzyć, ponieważ programiści zakładają, że dane ich aplikacji są poprawne. Jeśli kolor można wybrać tylko przez kliknięcie standardowego koła kolorów, użytkownik prawdopodobnie nie wykonuje żadnej dodatkowej pracy, aby sprawdzić, czy jest prawidłowy przed użyciem. (Dla porównania, aplikacja taka jak Safari wykonuje mnóstwo dodatkowej pracy, weryfikując wszystko, ponieważ ładuje i uruchamia pliki bezpośrednio z Internetu.)
Plusem jest to, że prawie zawsze jest poprawna i jest o wiele łatwiej, jeśli założymy, że wartości wewnętrzne są prawidłowe. Minusem jest to, że jeśli jakaś zła wartość w jakiś sposób się wślizguje (na przykład, że użytkownik zrobił coś zupełnie nieoczekiwanego), rzeczy mogą się zwariować, dopóki wszystko nie zostanie zresetowane.
źródło
Jako starszy obywatel, któremu podważono problemy techniczne, odkryłem, że mój plik preferencji iTunes jest uszkodzony i powodowałem, że umowa licencyjna pojawiała się przy każdym otwarciu iTunes. Ponadto wszystkie moje preferencje musiały zostać zresetowane. Uważam, że powyższe odpowiedzi są poprawne, ponieważ tuż przed tym problemem miałem zmuszony do wyłączania komputera (problemy elektryczne w okolicy) i kilkakrotnego ponownego uruchamiania / połowy ponownego uruchamiania. Aplikacje zostały zakończone przed ukończeniem instrukcji / pisania. Ale naprawa odradzania nowego pliku preferencji iTunes została pokazana online i bardzo łatwa do zrobienia. Naprawił problem.
źródło