Gui*_*rme 2 objective-c nsuserdefaults ios
我有一个存储到的对象队列NSUserDefaults.当我需要向其添加对象时,我调用以下方法:
+ (void)addCodeToQueue:(Code *)code {
// Note: userDefaults is a static, initialized variable
NSDictionary *codeModel = [self generateCodeModelWith:code];
// Read array from UserDefaults, or create one if nil
NSMutableArray *codeQueue = [userDefaults mutableArrayValueForKey:@"CodeQueue"] ? : [[NSMutableArray alloc] init];
// Add code model
[codeQueue addObject:codeModel];
// Add/replace array & sync
[userDefaults setObject:codeQueue forKey:@"CodeQueue"]; // App freezes here if uncommented
[userDefaults synchronize];
}
Run Code Online (Sandbox Code Playgroud)
我打电话时我的应用程序冻结了setObject:forKey.如果我在该行添加一个断点,继续运行,它就可以了.如果我不打破,它会冻结.
在我将Xcode更新到版本8并开始使用新SDK之后,这种情况就开始发生了.有什么暗示吗?
小智 15
我在几个应用程序中也遇到了这个问题 - 似乎通过mutableArrayValueForKey返回可变数组,你可能会陷入互斥锁.对于我的代码,我把它换成了:
...对我来说,至少,这已经修复了互斥锁问题.
| 归档时间: |
|
| 查看次数: |
938 次 |
| 最近记录: |