2014-11-01 51 views
-1

我想知道是否是一個昂貴的操作來訪問存儲在NSUserDefaults中的數據(字符串,布爾)。這比訪問一次並將其存儲在一個屬性中要慢很多,然後通過從屬性中獲取它而不是從NSUserDefaults再次獲取該屬性來使用它?或者這些差異是否微不足道?我知道文件狀態NSUserDefaults被緩存。訪問存儲在NSUserDefaults中的數據是否昂貴?

答案可能取決於你打算多久取一次。假設每分鐘需要20次。我不會以編程方式更改它,只會獲取當前值。

我很好奇,因爲總是提取它的一個好處是你可以保證這是當前值。如果您獲得一次並存儲它,則需要監聽NSUserDefaults的更改,然後通過獲取值來更新存儲的值。

+1

這些事情是「UserDefaults」嗎?如果不是,他們不屬於那裏,創建一個數據模型類,並根據需要保存/恢復。 – zaph 2014-11-01 22:30:31

+0

至於性能,除非遇到性能問題,否則這不是一個值得考慮的問題,它被稱爲:過早優化。 – zaph 2014-11-01 22:32:14

回答

1

在運行時,您使用的對象NSUserDefaults的讀取該 您的應用程序從用戶的默認數據庫使用的默認值。 NSUserDefaults 緩存信息以避免每次需要默認值時都必須打開用戶的默認值 數據庫。定期自動調用的同步方法 可使內存中的高速緩存與用戶的默認數據庫保持同步。

documentation,當你不使用synchronize方法,獲取從NSUserDefault值不應該是一個昂貴的操作。所以,雖然您只提取價值而不設置它,但您的操作不會比直接訪問屬性更昂貴。

+0

很高興知道,謝謝! – Joey 2014-11-01 22:41:41

相關問題