我看过无数使用NSUserDefaults保存整数的例子,但没有一个显示我保存和加载它们的位置。
我在哪里放置代码:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:9001 forKey:@"HighScore"];
[defaults synchronize];
在? 我把它放在viewDidLoad中吗?
答案 0 :(得分:1)
这取决于您的应用的要求。可能有多种情况,
NSUserDefaults
您可能希望暂时保存数据一段时间,因为如果重复保存到NSUserDefaults
,则需要确定将数据保存到NSUserDefaults
的最佳时间。例如: 您正在存储用户的在线/离线状态,并在1秒后反复检查,并保存到
NSUserDefaults
,这是非常的 即使在性能和电池消耗方面,也是昂贵的过程。 所以,你可能想继续保存部分,然后保存你的 数据到- (void)applicationWillResignActive:(UIApplication *)application
或其他一些适当的appDelegate方法。这样,您的数据将被正确保存,而无需太多电池 消费和影响表现。
NSUserDefaults
保存一个巨大的列表(您不应该这样做)嗯,
这种情况很棘手,所有开发人员都会说你不应该将大量数据保存到NSUserDefaults
,而是使用其他东西作为数据库,而不是NSUserDefaults
。但是,如果您仍然不相信,您应该在访问数据后立即使用[[NSUserDefaults standardUserDefaults] synchronize]
,或者在[[NSUserDefaults standardUserDefaults] setObject:@"OBJECT" forKey:@"KEY"]
NSUserDefaults
醇>
在我看来,保存所有
- (void)applicationWillResignActive:(UIApplication *)application
数据的最佳位置是NSUserDefaults
。至 明白看看这个例子,您在应用中保存到
void arraySum(int* sum, const int* a, const int* b, int rows, int cols) { for (int i = 0; i < rows*cols; i++) sum[i] = a[i] + b[i]; } int a[2][3] = ...; int b[2][3] = ...; int c[2][3]; arraySum((int*)c, (const int*)a, (const int*)b, 2, 3);
5次,然后让我们 假设执行需要0.0001秒并且需要0.0001%的电池 消费。总计,执行需要0.0001 * 5 = 0.0005秒 和0.0001 * 5 = 0.0005%的电池。但是,如果你只做一次,它只需要0.0001-0.0002 秒(只是假设)执行和0.0001%-0.0002%电池 消耗。
答案 1 :(得分:0)
您可以保存变量并从NSUserDefaults中随处读取它。您可以将其保存在AppDelegate或ViewDidAppear中,无论您喜欢什么。
请记住,NSUserDefault就像是一个本地缓存,可以保存一些变量,所以当用户杀死你的应用程序或从后台重新启动它时,你可以从中读取一些数据,并知道它暂停的应用程序状态或者停止。
但是,不要滥用它。它应该只保存一些轻量级数据,例如上次刷新时间,用户名,访问令牌等