崩溃日志:
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];
}
当对象的初始化在代码的早期发生时:
- (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];
}
您已经为字典和对象值检查了非空条件。尝试检查对象的密钥的nil条件。可能存在密钥可以为零的情况。
if (object && _objects && key) {
[_objects setObject:object forKey:key];
}