2011-02-07 9 views
0

このような問題は普通ですが、現在どのように動作しているのか知りません。 NSXMLparserを使用してURLを解析してデータベースに格納するたびに、初めて構文解析されますが、再度解析するとEXC_BAD_ACCESSがスローされます。ここで が私のコードです:NSXMLParser throw 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 alloc] initWithString:@ "http:example.com/file.xml"]; self.parser1 = [[NSXMLParser alloc] initWithContentsOfURL:url]; [parser1 setShouldResolveExternalEntities:NO]; [parser1 setDelegate:self]; [parser1 parse]; [url release]; } - (void)dealloc {[parser1 release]; } それでも私は同じエラーを投げます。 Sagos – lifemoveson

+0

これは、initParseへの1回の呼び出しで、またはinitParseへの後続の呼び出しで失敗しますか? –

+0

以降のinitParseの呼び出し。最初のコールは円滑に進みますが、2番目のコールでは失敗します。 – lifemoveson