2012-04-26 6 views
0

하나의 뷰 컨트롤러에서 다른 뷰 컨트롤러로 전달할 수있는 다른 관련 정보와 함께 구문 분석 된 XML 데이터가 포함 된 '깊은'NSMutableDictionary를 만들었습니다. NSMutableDictionary는 대부분 NSStrings를 포함하지만 또 다른 NSMutableDictionary NSStrings를 포함하고 마침내 사용자 객체의 NSMutableArray (심지어 달력을위한 것임)와 더 깊숙이 있습니다.NSString을 NSString으로 변환하면 EXC_BAD_ACCESS가 반환됩니다.

이제 캘린더이기 때문에 분명히 관련된 날짜가 있습니다. NSXMLParser를 사용하여 받고 구문 분석 한 XML 데이터는 문자열을 반환하므로 날 날짜를 사용 가능한 숫자로 변환하는 것이 내게있었습니다. XML의 날짜는 다음과 같은 형식으로 제공됩니다 : "MM.DD"나는 그렇게 할 수있는 다음과 같은 방법을 만들어 :

- (void)createDateCodesWithString:(NSString *)string 
{ 
    NSInteger monthCode; 
    NSInteger dayCode; 
    .... 
    NSArray *dates = [string componentsSeparatedByString:@"."]; 
    monthCode = [[dates objectAtIndex:0] integerValue]; 
    dayCode = [[dates objectAtIndex:1] integerValue]; 
    .... 
    shortDay = [NSNumber numberWithInt:dayCode]; 
} 

'shortDay은'비 원자의 NSNumber * 및 속성과 같은 바르 및 설정 (이다, retain)을 만들었습니다. 콘솔에서 NSLog 명령을 실행하면 'shortDay'와 다른 데이터가 깊은 NSMutableDictionary에 성공적으로 저장되었다는 메시지가 나타납니다. 그러나 데이터에 다시 액세스하려고하면 문제가 발생합니다. NSString *에 저장된 ivar에 액세스하면 모든 것이 정상적으로 작동하지만 NSNumber에 액세스하려고하면 * 코드 1 또는 코드 2로 EXC_BAD_ACCESS 오류가 발생합니다. 이것은 NSNumber *를 호출하려고 시도하는 방법입니다.

NSNumber *number = day.shortDay; 
    return [number stringValue]; 

NSArray * 날짜가 문자열을 월 및 일 문자열로 분리하고 날짜 문자열이 2 자 길이로, 예를 들어 '6'앞에 '0'이 포함될 수 있습니다. 6 월 6 일? 어떤 충고?

필요한 경우 더 많은 코드를 게시하게되어 기쁩니다.

+0

NSNumber 클래스 참조에서 이러한 객체를 만드는 방법을 확인하십시오. 정수 할당은 작동하지 않습니다. 경고하지 않았 니? –

답변

1

shortDay의 메모리가 다음 번에 액세스하려고 시도 할 때 정리 중일 수 있습니다. 를 할당 할 때, 대신이 시도 :

shortDay = [[NSNumber numberWithInt:dayCode] retain]; 

메모리가 너무 일찍 해제되지 않도록하기 위해 (AKA 개체의 소유권을) 참조 카운트를 증가 할 수 있습니다.

이 방법으로 문제가 해결되면 해당 클래스의 dealloc 메서드에서 [shortDay release]으로 전화하여 적절한 시간에 메모리를 적절히 할당 취소해야합니다.

+0

나는 A.R.C.를 사용하고 있습니다. XCode5에 포함되어 있기 때문에 모든 것을 할 수 있습니다 (실수입니까?) retainCount는 액세스하려고 시도 할 때 3입니다. – achi

+0

나는 그것을 되찾았다, 그것은 효과가 있었다. 감사! NSNumber가 일찍 정리 된 이유와 NSString이 아닌 이유를 아시겠습니까? 또한 저는 A.R.C.를 사용하기 때문에 단두대와 다른 사람들을 석방해야합니까? – achi

+2

ARC가 활성화 된 프로젝트에서는 release를 사용하고 보유해서는 안됩니다. 나는 그것이 어쨌든 컴파일조차되지 않을 것이라고 생각한다. –

관련 문제