NSUserDefaults写入磁盘?

fuz*_*oat 3 iphone cocoa-touch objective-c

我正在为当前选择的UITabBar编写一个索引,[NSUserDefaults standardUserDefaults]但我得到了索引未写入磁盘的奇怪情况.我在用

// TO WRITE
NSNumber *selectedTab = [NSNumber numberWithInt:[tabBarController selectedIndex]];
[[NSUserDefaults standardUserDefaults] setObject:selectedTab forKey:@"selectedTab"];
Run Code Online (Sandbox Code Playgroud)

和......

// TO READ
NSNumber *selectTab = [[NSUserDefaults standardUserDefaults] objectForKey:@"selectedTab"];
NSLog(@"SelectTab: %@", selectTab);
[tabController setSelectedIndex:[selectTab intValue]];
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我是否setObject:forKey:实际写入磁盘,还是我需要使用类似的东西强制写入synchronize

Dan*_*son 6

你需要打电话synchronize,虽然它会定期自动调用(至少根据文档).打电话给它的好时机是在app委托applicationWillEnterBackground:applicationWillTerminate:.