0

我正在使用以下代码将包含一些数据(图像、字符串、数组等)的类实例保存到我的 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"];
4

2 回答 2

1

调用时会加载

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *encodedData = [defaults objectForKey:@"myClassData"];
于 2013-02-05T10:10:10.643 回答
0

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

你真的不应该这样做。NSUserdefaults 仅用于进行首选项和设置,非常小的东西

于 2013-02-05T10:12:15.293 回答