2017-10-28 2 views
0

id 개체에서 isKindOfClass을 사용하려고 한 이유는 무엇입니까?isKindOfClass on ID 개체가 원인 EXC_BAD_ACCESS

: 관리자가 충돌하는 동안 보여 어떤 여기에

- (void)growlNotificationWasClicked:(id)fromUserClick { 
    NSDictionary *data = (NSDictionary *)fromUserClick; 
    id object = [[data objectForKey:@"someKey"] unsignedLongValue]; 

    if([object isKindOfClass:[NSNumber class]]) { 
     NSLog(@"test"); 
    } 
} 

그리고 : 때때로, 그것은 잘못된 심하게 가서 여기

EXC_BAD_ACCESS는 (사용자가 으르렁 알림을 클릭 할 때 호출됩니다) 코드를 보여줍니다 enter image description here

이 문제에 대해 도움을주십시오. 고맙습니다.

+0

'object'는 아마 할당이 해제되었거나 유효한 참조가 아닙니다. 좀비가 활성화되어 있습니까? – Sulthan

+0

감지하거나 피할 수있는 방법이 있습니까? – user2131907

+0

개체는 어디에서 왔으며 어떻게 저장합니까? – Willeke

답변

1

isKindOfClassNSObject의 방법입니다. unsignedLongValue을 사용하면 unsigned long을 반환하고 unsigned long은 개체가 아닙니다.

그래서 충돌이 발생했습니다.

P/S : [[data objectForKey:@"someKey"] unsignedLongValue]을 쓸 때 항상 숫자를 반환합니다. 반환 된 값이 숫자인지 확인하지 않아도됩니다. 그냥 사용하십시오.

unsigned long number = [[data objectForKey:@"someKey"] unsignedLongValue];

+0

질문의 코드는'unsignedLongValue'를합니다. 올바른 코드는 무엇입니까? – Willeke

+0

다시 확인하십시오. 답변을 업데이트했습니다. – trungduc

+0

@Willeke 당신이 해결할 수 있는지 말해 주겠다. – trungduc

관련 문제