1

CXMLDocumentをリリースすると、EXEC_BAD_ACCESSエラーが発生します。

これが依存関係のない私の非常に単純なコードです:

@implementation TestViewController

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];

    NSError *xmlError = nil;    
    CXMLDocument *xmlDoc = [[CXMLDocument alloc] initWithXMLString:@"<test></test>" options:0 error:&xmlError];
    CXMLElement *rootElement = [xmlDoc rootElement]; // Unused local variable   
    [xmlDoc release];
}

コメントアウトしCXMLElement *rootElement = [xmlDoc rootElement];たり、保持したりしてもエラーはありません。

呼び出す[xmlDoc rootElement]と、xmlDocが解放されてしまうのはどうしてですか?これはTouchXMLのバグですか、それとも本当に基本的なものが欠けていますか?

ここでも同様の質問ですが、有効な答えはありません:CXMLDocumentをリリースしようとすると奇妙なクラッシュが発生します

4

3 に答える 3

0

それはrootElementを取得する正しい方法ですか?私はTouchXMLを使用したことがありませんが、私が見つけたものから、rootElementの取得はそれに応じて行われているようです

NSArray *foundRoots = [theXMLDocument nodesForXPath:@"//Root"  error:&xmlError]; 
CXMLElement Root = [foundRoots objectAtIndex:0];
于 2011-07-29T22:11:55.240 に答える
0

Guard Malloc をオフにすると、クラッシュはなくなります。Guard Malloc が信頼できると仮定すると、これは Touch XML のバグのようです。

于 2011-08-23T13:31:43.413 に答える
0

私は TouchXML をかなり頻繁に使用しており、(幸いなことに?) 今までこの問題は発生していませんでしたが、たまたま起こったのです...

ここに解決策を投稿しました: [CXMLNode nodesForXPath] with namespace mappingsを使用したメモリクラッシュ

于 2013-09-24T08:08:50.457 に答える