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.
(Weź pod uwagę, że listy są używane do wszelkiego rodzaju rzeczy, takich jak przeciąganie i upuszczanie i schowek, uprawnienia piaskownicy do uruchamiania aplikacji, interfejsy użytkownika dla każdej aplikacji, a nawet która ikona wyświetlana w Finderze. Byłoby niewiarygodne, gdyby wystąpił błąd w kodzie pisania list, który akurat zepsuł pliki preferencji dla niektórych aplikacji, ale żadna z tych innych rzeczy!)
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.
-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”.