2014-03-26 2 views
3

Crashlog :NSDictionaryM의 setObject : forKey : EXC_BAD_ACCESS 충돌

Crashed: com.apple.main-thread 
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x12121212 

libobjc.A.dylib - objc_msgSend - isEqual: 
CoreFoundation - -[__NSDictionaryM setObject:forKey:] 

코드 : _objects의 초기화

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]; 
} 
+0

코드를 게시 할 수 있습니까? 사전과 객체의 초기화? –

+0

ARC를 사용하고 있습니까? 객체 할당 해제에 대한 –

+1

더 자세한 내용은 xcode의 객체를 좀비로 처리 할 수 ​​없습니다. http://stackoverflow.com/questions/20109022/tracking-down-zombies-with-xcode-5-on-ios6 –

답변

3

사전 및 개체 값에 대해 조건을 선택하지 않았습니다. 개체 키에 대한 nil 조건을 확인하십시오. 열쇠가없는 경우가있을 수 있습니다.

if (object && _objects && key) { 
    [_objects setObject:object forKey:key]; 
} 
관련 문제