2012-07-16 86 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