2013-10-07 15 views
7

Pracuję nad aplikacją Mac OS X, która została opracowana dla Mountain Lion. Aplikacja wykonuje niektóre zadania konfiguracyjne przy pierwszym uruchomieniu. Następnie ustawia flagę w [NSUserDefaults standardUserDefaults]; w kolejnych uruchomieniach aplikacja sprawdza, czy ta flaga jest ustawiona, i nie wykonuje tych pierwszych zadań konfiguracyjnych, jeśli jest ustawiona.Gdzie NSUserDefaults przechowuje dane w systemie Mac OS X?

Na Mountain Lion, udało mi się usunąć plik ~/Library/Preferences/bundleid.plist, aby wymazać wszystko przechowywane w NSUserDefaults przez aplikację. Jednak w nowszych wersjach systemu Mac OS X, gdy aplikacja działa, nawet nie tworzy tego pliku. Potwierdziłem, że zapisuje dane pomyślnie do NSUserDefaults, sprawdzając wartości powracające z [[NSUserDefaults standardUserDefaults] objectForKey:@"foo"] w debugerze.

Czy ktoś może wskazać mi właściwy kierunek usuwania ustawień mojej aplikacji przechowywanych w NSUserDefaults?

+1

Mavericks jest nadal objęty NDA, więc wątpię, czy ktoś może bezpośrednio odpowiedzieć na twoje pytanie. Powiedziałeś, czy próbowałeś użyć fs_usage (narzędzia dostępnego we wszystkich wersjach OS X), aby zobaczyć, gdzie aplikacja próbuje zapisać plik plist? – iccir

+0

Ups, moje złe - usunąłem odniesienia do Mavericks. – Greg

+0

Sądzę jednak, że jest to bezpieczne: https://devforums.apple.com/message/894120 –

Odpowiedz

18

Mavericks nie został jeszcze wydany, więc ignoruję tę część pytania. Powinieneś pytać na forach programistów, jeśli chcesz uzyskać odpowiedź specyficzną dla Mavericks.

Niezależnie od wersji OS X właściwą metodą usuwania domeny domyślnej jest defaults delete bundleid lub its programmatic equivalent. ~/Library/Preferences to szczegół implementacji. Pstry zawarte w nich nie zawsze zawierają najnowsze informacje. Przed instalacją Mountain Lion zmiany ustawień domyślnych są buforowane w poszczególnych aplikacjach, dopóki nie zostaną zmienione na synchronize; w Mountain Lion i później są one przechowywane w pamięci w procesach cfprefsd i leniwie przepłukiwane na dysk.

Aby uzyskać więcej informacji, patrz Core Foundation release notes for 10.8. Aktualizacja: aktualny przewodnik po stanie NSUserDefaults to .

Powiązane problemy