gpt4 book ai didi

ios - NSUserDefaults setObject :forKey deadlocks?

转载 作者:可可西里 更新时间:2023-11-01 04:56:53 27 4
gpt4 key购买 nike

今天遇到了一个比较迷惑的问题:

当我的应用程序启动时,我正在下载一些东西,在解析响应后,我将数据写入 NSUserDefaults。现在它工作正常,直到我最近发现有时我的整个 UI 会卡住并且在我重新启动应用程序之前不会解冻。当我在调试器中点击暂停程序执行时,我得到:

Stacktrace

文档说 NSUserDefaults 是线程安全的,据我所知,没有其他线程试图访问用户默认值...

任何关于如何解决/进一步调试问题的想法都将不胜感激!

提前致谢!

导致问题的代码:

这是在我收到网络服务响应后调用的:

+ (void)updateWithData:(NSData *)data
{
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];

NSError *error;
NSArray *decodedData;

if (data) {
decodedData = [NSPropertyListSerialization propertyListWithData:data
options:NSPropertyListImmutable
format:NULL
error:&error];
}

if (!error && decodedData) {
[userDefaults setObject:decodedData forKey:kUserDataUserDefaultsKey];
}
else{
NSLog(@"%@", error.localizedDescription);
}
}

最佳答案

更新了新的代码示例:

您应该将解码数据转换为存档数据,以便将其存储在 NSUserDefaults 中:

if (!error && decodedData) {
NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject: decodedData]];
[userDefaults setObject: archivedData forKey:kUserDataUserDefaultsKey];
}

并用这个检索数据:

NSArray *storedData = [NSKeyedUnarchiver unarchiveObjectWithData:[[NSUserDefaults standardUserDefaults] objectForKey:kUserDataUserDefaultsKey]];

关于ios - NSUserDefaults setObject :forKey deadlocks?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31320221/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com