崩溃日志:
Crashed: com.apple.main-thread
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x12121212
libobjc.A.dylib - objc_msgSend - isEqual:
CoreFoundation - -[__NSDictionaryM setObject:forKey:]
代码:
if (object) {
[_objects setObject:object forKey:key];
}
当_objects的init在代码中更早发生时:
- (id)init {
self = [super init];
if (self) {
_objects = [[NSMutableDictionary alloc] init];
}
return self;
}
对象可以是零值,这就是为什么我要检查它是否存在:
AFHTTPRequestOperation *object = [[AFHTTPRequestOperation alloc] initWithRequest:request];
我不确定究竟会导致什么。崩溃很少发生,我无法重现它,但有些用户得到它。我假设有一些东西被解除分配,可能是_objects
是零吗?或整个控制器被解除分配?为什么我可以在日志中看到isEqual
?
这可以解决这个问题吗?
if (object && _objects) {
[_objects setObject:object forKey:key];
}
答案 0 :(得分:4)
您已检查字典和对象值的非空条件。尝试检查对象键的nil条件。可能存在密钥可以为零的情况。
if (object && _objects && key) {
[_objects setObject:object forKey:key];
}