假设我需要将某些数据(如数组)保存到NSUserDefaults。
如果我需要从我的应用中的不同位置访问该数据,将它从视图控制器传递到视图控制器是否更有效,或者每次需要时将其从NSUserDefaults中拉出来?
请记住,我需要保存它,因此可以减少保存数据所需的开销。基本上,创建和设置ivar或从NSUserDefaults加载数据是否有更多的开销?
答案 0 :(得分: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)
我总是喜欢创建一个单例对象,可以从应用程序的任何位置访问该对象来保存这类信息。
我想在this应用内购买教程中有一个例子是RageIAPHelper。