NSUserDefault内存管理问题

时间:2013-02-05 10:03:44

标签: iphone ios objective-c nsuserdefaults

我正在使用以下代码将我的类实例与一些数据(图像,字符串,数组等)保存到我的NSUserDefaults中:

NSData *encodedData = [NSKeyedArchiver archivedDataWithRootObject:myClassInstance];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:encodedData forKey:@"myClassData"];
[defaults synchronize];

如果我没有互联网连接,我这样做是为了使用这些数据。

使用NSuserDefaults将所有这些数据加载到内存中吗?或者当我使用它时加载:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *encodedData = [defaults objectForKey:@"myClassData"];

2 个答案:

答案 0 :(得分:1)

拨打电话时会加载

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *encodedData = [defaults objectForKey:@"myClassData"];

答案 1 :(得分:0)

我不确定何时加载数据,但根据Apple的指导原则,您不应该使用nsuserdefaults来存储任何数量的数据,因为它很慢。您应该将数据写为文件。 NSDictionary和NSArray可以将它们自己写入文件并直接读回。

你真的不应该这样做。 NSUserdefaults只考虑做首选项和设置,非常小的东西