2012-03-15 2 views
2

시뮬레이터 관련 문제인지 잘 모르겠지만 iPad 5.0 시뮬레이터와 그 아래에서 (지금은 iPad 5.1 시뮬레이터를 실행하고있을 때) 이전에이 문제가 있었음을 기억하지 못합니다. .NSObject에 대한 설명 메서드 재정의

- (NSString *)description { 
    NSString *str = [[NSString alloc] initWithFormat:@"Condition: %@", _conditionName]; 
    return [str autorelease]; 
} 

나는이 객체들의 배열을 가지고있다. 내 가치관은 모두 유효합니다. 내가 할 때 :

그것은 내 모든 값을 기록한 다음 끝에 충돌합니다. 내가 좀비 인스 트루먼 트를 볼 때 마지막 4 건의 전화는

-[NSPlaceHolderString initWithBytes:length:encoding:] 
+[NSString stringWithUTF8String:] 
-[NSAutoreleasePool release] 
-[NSPlaceholderString initWithFormat:locale:arguments:] 

설명을 올바르게 무시합니까?

편집 : 인스트루먼트에서 다음 메시지가 나타납니다. 주소가 0x8ccf190 인 할당 해제 된 개체 (좀비)에게 메시지가 전송되었습니다. 앱 자체에서 EXC_BAD_ACCESS가 표시됩니다.

+1

왜 ARC로 전환하지 않습니까? – akashivskyy

+1

'_conditionName'은 유효한 Objective-C 객체입니까? –

답변

3

설명 메서드에서 반환 된 문자열이 너무 빨리 릴리스되는 것 같습니다.

stringWithFormat: 클래스 메서드를 사용하여 메서드를 다시 작성해보십시오.

- (NSString *)description { 
    return [NSString stringWithFormat:@"Condition: %@", _conditionName]; 
} 
+0

이것은 내가 항상하는 일이며 결코 문제가되지 않습니다. – QED

+1

@jonkroll 그건 내가 alloc] init] autorelease autoreleased NSString 반환 같은 것이라고 생각 했으니 까 흥미 롭군요? – Crystal

+1

@Crystal : 솔직히 나도 그렇게 생각했다. 나는이 상황에서 어떤 일이 일어나고 있는지 완전히 이해하지 못한다는 것을 인정할 것이다. – jonkroll

0

_conditionName이 프리미티브가 아닌지 확인하십시오. 형식 문자열 "% @"에 개체가 필요하기 때문입니다.