在开发 iPhone 应用程序并尝试通过标准 NSUserDefaults 机制保存首选项时,我遇到了非常不一致的结果。我使用的代码几乎直接来自 Erica Sadun 的 iPhone Developer's Cookbook(顺便说一句很棒的书),它看起来像这样:
(无效)更新默认值
{
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] 同步];
[法术释放];
[位置释放];
}
这些值有时会被保存……有时会被恢复。我无法确切知道什么使它起作用或不起作用。
有没有其他人有类似的经历?关于什么可能使它起作用的任何建议?同步方法是强制写入磁盘并保存值的最佳方法,还是有更好的方法(用于生产和模拟器)。
谢谢瑞恩