我一直在尋找了一段時間,做我需要做同步,如果我做的:從鍵中移除對象後,我需要在NSUserDefaults中進行同步嗎?
[[NSUserDefaults standardUserDefaults] removeObjectForKey:kType];
在那之後,我應該怎麼辦?:
[[NSUserDefaults standardUserDefaults] synchronize];
等待着你在這個答案物。
我一直在尋找了一段時間,做我需要做同步,如果我做的:從鍵中移除對象後,我需要在NSUserDefaults中進行同步嗎?
[[NSUserDefaults standardUserDefaults] removeObjectForKey:kType];
在那之後,我應該怎麼辦?:
[[NSUserDefaults standardUserDefaults] synchronize];
等待着你在這個答案物。
的
[default synchronize];
的目的是使 被寫入磁盤立即用戶的默認值。你不需要明確地稱它爲 ,iOS已經在適當的時候做到了。所以你可以 刪除該行。實際上,如果每次設置默認設置時致電synchronize
,都會導致性能問題。在iOS 7之前,當 應用程序轉換到後臺時,用戶默認始終同步的位置。從iOS 7開始,即沒有 的情況時間更長,因此您可能需要在您的應用 代理的
applicationDidEnterBackground:
中呼叫synchronize
或註冊到UIApplicationDidEnterBackgroundNotification
通知來執行此操作。從the documentation for
-[NSUserDefaults synchronize]
:因爲這個方法是每隔一段時間自動調用,使用此方法僅如果你不能等待自動 同步(例如,如果你的應用程序即將退出)或 如果您要將用戶默認值更新爲磁盤上的內容,即使 您尚未進行任何更改。
如果寫入默認值,會發生什麼情況不會同步,並且在應用程序崩潰後的某個時候。我相信在這種情況下你會失去你的改變。那麼最好在寫入後始終同步? – lostintranslation
除非您存儲到默認值中的數據非常重要,否則您將失去它。但是這絕不應該發生,因爲您並不認爲存儲重要的數據,並且應該重新創建所有數據,您必須以不同的方式處理。 就像關於文檔的報價一樣,同步的目的是立即寫入磁盤,通常在適當的時候由操作系統處理。 – ZetaPR
http://stackoverflow.com/a/9647965/6124910 – Patrick
是的,你需要調用它。此方法同步您在內存和磁盤上的更改 – iSashok
[NSUserDefaults synchronize-method]的可能重複(http://stackoverflow.com/questions/9647931/nsuserdefaults-synchronize-method) –