2011-02-07 4 views
0

그런 문제가있는 것이 정상이지만 현재 어떻게 작동하는지 알고 있어야합니다. NSXMLparser를 사용하여 URL을 구문 분석하고 데이터베이스에 저장할 때마다 처음 구문 분석되지만 다시 구문 분석하면 EXC_BAD_ACCESS가 throw됩니다.NSXMLParser throwing EXC_BAD_ACCESS

가에서 함수의 끝을 "}"에 도달
- (void) initParse { 

    [super init]; 

    appleAppDelegate = (appleAppDelegate*)[[UIApplication sharedApplication] delegate]; 

    NSURL *url = [[[NSURL alloc] initWithString:@"http:example.com/file.xml"] autorelease]; 

    self.parser1 = [[[NSXMLParser alloc] initWithContentsOfURL:url] autorelease] ; 

    [parser1 setShouldResolveExternalEntities:NO]; 
    [parser1 setDelegate:self]; 

    [parser1 parse]; 

} 

, 그것은 EXC_BAD_ACCESS 예외 : 다음은 내 코드입니다. 내 URL과 내 파서를 공개하기 때문에 무엇이 잘못되었는지 확신 할 수 없습니다. 이 상황을 경험 한 사람이 있습니까?

Sagos

답변

0

NSZombieEnabled로 실행 해 봅니다. 해제 된 후에 액세스되는 객체의 유형을 알려줍니다.

+0

시도했지만 어떤 오브젝트가 릴리스되지는 않습니다. 다음과 같은 오류가 발생했으나 어떤 배열을 가져올 수 없습니다 : *** - [__ NSArrayM release] : 해제 된 인스턴스에 메시지 전송 0xa2d0900 – lifemoveson

+0

NSXMLParser를 소유 한 객체가 해제 되었습니까? 오버 릴리스되는 배열은 아마도 XML 파서의 내부에있을 것입니다. –

+0

인스 트루먼 트의 경우 메모리 위치를 확인하면 모든 alloc 및 release 또는 retain의 목록이 있으며이 방법으로 추적 할 수 있습니다. 코드 위치에 코드가 표시됩니다 (소스 코드가있는 경우) –

0

당신은 정확히 문제가 릴리스 된 개체에 액세스하는, 당신이 말에 출시 있는지 확인하고 당신이 주변에 여전히 필요가 있는지 모든 것을합니다.

+0

필자는 autorelease를 변경하여 릴리스 할 때 필요한 시간에 릴리스되었는지 확인했습니다. (void) initParse { [super init]; appleAppDelegate = (appleAppDelegate *) [[UIApplication sharedApplication] delegate]; NSURL * url = [[NSURL 할당] initWithString : @ "http : example.com/file.xml"]; self.parser1 = [[NSXMLParser alloc] initWithContentsOfURL : url]; [parser1 setShouldResolveExternalEntities : NO]; [파서 1 setDelegate : 자기]; [parser1 parse]; [url release]; } - (void) dealloc {[parser1 release]; } 하지만 여전히 나에게 같은 오류가 발생합니다. Sagos – lifemoveson

+0

그래서 initParse에 대한 1 회 호출 또는 initParse에 대한 후속 호출에 실패합니까? –

+0

이후의 initParse 호출. 첫 번째 통화는 원활하게 진행되지만 두 번째 통화에서는 실패합니다. – lifemoveson