2012-07-16 43 views
0

所以在我的应用程序,我节省了一些整数键在NSUserDefaults,像最少大约20NSUserDefaults的一致节省

像这样的事情,但很多:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
[prefs setInteger:1 forKey:@"game1"]; 
[prefs setInteger:1 forKey:@"game2"]; 
[prefs setInteger:1 forKey:@"game3"]; 

所以我只是想知道,应该我打电话

[[NSUserDefaults standardUserDefaults] synchronize]; 

每次我救?

因为有时我遇到了我正在保存的整数的不一致,并且一直在加载停止,运行应用程序xCode或从主页按钮加载。

我读了几篇文章上说网站:

在iOS4的,您的用户默认值可能不会按home键的时候保存。在applicationDidEnterBackground:中手动拨打[[NSUserDefaults standardUserDefaults] synchronize]应确保您的User Defaults已正确保存。

这是真的,并在iOS5相同?还是有更准确的方法,更简单的方法来保存整数。谢谢您的帮助。

回答

1

苹果的文件说的:

“因为这个方法是每隔一段时间自动调用,使用此方法仅如果你不能等待自动同步(例如,如果你的应用程序即将退出),或者如果即使您没有进行任何更改,您也希望将用户的默认值更新为磁盘上的内容。“

因此,根据您设置的数据的紧迫性,您可能不需要调用同步。完整文档是here

+0

因为即时通讯有问题,当我再次设置它会好起来,但来自主页按钮或从Xcode退出,有时不正确。 – Bazinga 2012-07-16 14:22:11

+0

如果这些值没有得到保存,那么每次更改时都需要调用'-synchronize'。只要你每秒没有多次调用它,它的开销相对较低。 – 2012-07-16 14:25:06

+0

那么它不时调用'-synchronize'吗? – Bazinga 2012-07-16 14:26:40

0

不,您不需要,当您在prefs上拨打setInteger:forKey:时,它会自动保存。

+0

虽然它不立即保存。 '-synchronize'确保它马上被保存。 – shabbirv 2012-07-16 15:09:56

+0

是的,这是真的,但他问他是否应该每次保存时调用“同步”,他不应该这样做。它只能在需要时使用,并且如果数据太重要,不会丢失,如果应用程序崩溃。 – Imirak 2012-07-16 15:15:23