2011-02-07 111 views
0

有這樣的問題是正常的,但我目前堅持知道它是如何工作的。 每當我使用NSXMLparser解析URL並將其存儲在數據庫中時,它會首次被解析,但是當我再次解析它時,它會拋出EXC_BAD_ACCESS。 這裏是我的代碼:NSXMLParser投擲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

您正在訪問一個釋放的對象這正好是你的問題,請確保您發佈的結束,讓你需要的仍然是圍繞確保一切。

+0

我確實改變了autorelease,發佈並確保在需要的時候發佈它。 (void)initParse { [super init]; appleAppDelegate =(appleAppDelegate *)[[UIApplication sharedApplication] delegate]; NSURL * url = [[NSURL alloc] initWithString:@「http:example.com/file.xml」]; self.parser1 = [[NSXMLParser alloc] initWithContentsOfURL:url]; [parser1 setShouldResolveExternalEntities:NO]; [parser1 setDelegate:self]; [parser1 parse]; [網址發佈]; } - (void)dealloc {[parser1 release]; } 但它仍然引發了同樣的錯誤。 Sagos – lifemoveson 2011-02-07 19:18:03

+0

所以它失敗,1調用initParse或後續調用initParse? – 2011-02-07 19:27:18