У меня были очень противоречивые результаты при разработке приложения для iPhone и попытке сохранить настройки с помощью стандартного механизма NSUserDefaults. Я использую код почти прямо из Поваренной книги разработчиков iPhone Эрики Садун (кстати, фантастическая книга), это выглядит так:
(void) updateDefaults { NSMutableArray *spells = [[NSMutableArray alloc] init]; NSMutableArray *locs = [[NSMutableArray alloc] init]; for (DragView *dv in [boardView subviews]) { [spells addObject:[dv whichSpell]]; [locs addObject:NSStringFromCGRect([dv frame])]; } [[NSUserDefaults standardUserDefaults] setObject:spells forKey:@"spells"]; [[NSUserDefaults standardUserDefaults] setObject:locs forKey:@"locs"]; [[NSUserDefaults standardUserDefaults] synchronize]; [spells release]; [locs release]; }
Значения сохраняются, иногда ... и иногда восстанавливаются. Я не могу точно сказать, что работает, а что нет.
Есть ли у кого-нибудь еще подобный опыт? Есть предложения по поводу того, что может заставить его работать? Является ли метод синхронизации лучшим способом принудительной записи на диск и сохранения значений, или есть что-то лучшее (как для производства, так и для симулятора).
Спасибо Райан