因此,我看了關于NSUserDefaults的syncnize()方法的蘋果文檔。請參閱以下參考:https://developer.apple.com/reference/foundation/userdefaults/1414005-synchronize該頁面當前顯示為:因為此方法是定期自動調用的,所以僅當您無法等待自動同步時(例如,如果您的應用程序將要退出),或者您想要將用戶默認值更新為磁盤上的默認值時,才使用此方法。您尚未進行任何更改。但是,我仍然不明白的是什么時候應該調用此方法?例如,是否應在用戶每次更改應用程序設置時調用它?還是我應該相信后臺api能夠處理這個問題?內存中的設置更改后立即離開視圖是否會導致該更改丟失?此外,何時無法調用syncnize()導致用戶設置未正確更改?此外,調用此方法的成本(性能,內存或其他方面)是多少?我知道這涉及到磁盤讀/寫操作,但是這真的需要花很多精力在手機上嗎?
3 回答

墨色風雨
TA貢獻1853條經驗 獲得超6個贊
如預期的那樣,已棄用,如Apple Doc中所述
同步()
等待對默認數據庫的所有未決異步更新并返回;此方法是不必要的,不應使用。
原始答案
synchronize打算提到被棄用這里
- 不建議使用sync,并且在以后的版本中將使用NS_DEPRECATED宏進行標記。
-synchronize阻塞調用線程,直到所有正在進行的設置操作完成為止。這不再是必需的。對-synchronize先前使用的替換取決于調用sync的意圖。如果您已同步…
—…在讀取之前,為了獲取更新的值:刪除同步調用
—…在編寫后通知另一個程序讀?。毫硪粋€程序可以使用KVO遵守默認值而無需通知—…在非應用程序(命令行工具,代理或守護程序)中退出之前:調用CFPreferencesAppSynchronize (kCFPreferencesCurrentApplication)
—…由于任何其他原因:刪除同步呼叫
添加回答
舉報
0/150
提交
取消