假設我需要將某些數據(如數組)保存到NSUserDefaults。在視圖之間傳遞數據的最有效方式
如果我需要從應用程序中的不同位置訪問數據,那麼將它從視圖控制器傳遞到視圖控制器更有效率,還是每次需要時將其從NSUserDefaults中拉出?
請記住,我需要保存它,因此折扣保存數據所涉及的開銷。基本上,在創建和設置ivar時,還是在從NSUserDefaults加載數據時,會有更多的開銷?
假設我需要將某些數據(如數組)保存到NSUserDefaults。在視圖之間傳遞數據的最有效方式
如果我需要從應用程序中的不同位置訪問數據,那麼將它從視圖控制器傳遞到視圖控制器更有效率,還是每次需要時將其從NSUserDefaults中拉出?
請記住,我需要保存它,因此折扣保存數據所涉及的開銷。基本上,在創建和設置ivar時,還是在從NSUserDefaults加載數據時,會有更多的開銷?
我總是喜歡創建一個單獨的對象,可以從應用程序的任何地方訪問以保存這種信息。比如說你創建了一個名爲DataStore
的類。創建一個類的方法sharedDataStore
像這樣:
@implementation DataStore
static DataStore *sharedGameStore_ = nil;
+ (DataStore *)sharedDataStore {
if (sharedDataStore_ != nil) return sharedDataStore_;
static dispatch_once_t pred;
dispatch_once(&pred, ^{
sharedDataStore_ = [[DataStore alloc] init];
});
return sharedDataStore_;
}
在您的數據存儲類的init
方法,你做的所有設置,在NSUserDefaults
什麼具備的,你讀。然後添加用於讀取/寫入您需要使用的數據的屬性和/或方法,您可以確保它正確緩存等等,以便進行多次讀取。
然後在您的應用程序的任何地方,你可以包括.h
文件,並調用:
[DataStore sharedDataStore] someMethodName]
和放心,你正在閱讀,集中,高效地寫你的數據,因爲您的應用程序只創建的一個實例目的。
我總是喜歡創建一個單獨的對象,可以從應用程序中的任何位置訪問以保存這種信息。
我想一個例子是RageIAPHelper this in-app購買教程。
很好的回答。謝謝。 –