2013-01-16 39 views
1

假設我需要將某些數據(如數組)保存到NSUserDefaults。在視圖之間傳遞數據的最有效方式

如果我需要從應用程序中的不同位置訪問數據,那麼將它從視圖控制器傳遞到視圖控制器更有效率,還是每次需要時將其從NSUserDefaults中拉出?

請記住,我需要保存它,因此折扣保存數據所涉及的開銷。基本上,在創建和設置ivar時,還是在從NSUserDefaults加載數據時,會有更多的開銷?

回答

5

我總是喜歡創建一個單獨的對象,可以從應用程序的任何地方訪問以保存這種信息。比如說你創建了一個名爲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] 

和放心,你正在閱讀,集中,高效地寫你的數據,因爲您的應用程序只創建的一個實例目的。

+1

很好的回答。謝謝。 –

0

我總是喜歡創建一個單獨的對象,可以從應用程序中的任何位置訪問以保存這種信息。

我想一個例子是RageIAPHelper this in-app購買教程。

相關問題