0

私のアプリはクラッシュしませんでした。

DDXMLDocument *d = [[DDXMLDocument alloc] initWithData:abookConnData options:0 error:nil];
books = [d nodesForXPath:@"abooks/abook" error:nil];

DDXMLDocumentのオブジェクトを自動リリースに変更しましたが、アプリがクラッシュし始めました。しかし、なぜ?

DDXMLDocument *d = [[[DDXMLDocument alloc] initWithData:abookConnData options:0 error:nil] autorelease];
books = [d nodesForXPath:@"abooks/abook" error:nil];

私のアプリはDDXMLNodeでクラッシュしました。[DDXMLNode XMLStringWithOptions:]

ここに画像の説明を入力してください

4

1 に答える 1

1

確かに言うのに十分なコードを提供していませんが、これはほぼ確実に、DDXMLDOcument *(d)を使用する前にリリースされている場合です。

ゾンビ検出をオンにして、例外にブレークポイントを設定してみてください。多くの場合、問題が発生している正確なコード行にたどり着く可能性があります。

デバッグのもう1つのトリックは、DDXMLDocumentのサブクラスを作成し、ALLOCとRELEASEをオーバーライドしてNSLog()をイベント(次に[super alloc]または[super release]!)を呼び出して、何が起こっているかを監視できるようにすることです。

于 2012-04-09T21:32:00.080 に答える