我解析一些XML使用TouchXML,我得到一個崩潰-EXC_BAD_ACCESS。我通過試驗和錯誤發現的是,如果我不釋放我的CXMLDocument(我分配),那麼一切都很好。以下是我的代碼:奇怪的崩潰,如果我試圖釋放CXMLDocument
- (NSArray *)getLookUps {
//Do some stuff and then...
NSData *tempData = [NSURLConnection sendSynchronousRequest:request
returningResponse:nil
error:nil];
CXMLDocument *xmlDoc = [[CXMLDocument alloc] initWithData:tempData options:0 error:nil];
NSDictionary *mappings = [NSDictionary dictionaryWithObject:@"http://****/****"
forKey:@"****"];
NSLog(@"%@", [[NSString alloc] initWithData:tempData encoding:NSUTF8StringEncoding]);
NSArray *orders = [[xmlDoc rootElement] nodesForXPath:@"//****:Unit"
namespaceMappings:mappings
error:nil];
NSMutableArray *units = [NSMutableArray arrayWithCapacity:200];
for (CXMLElement *order in orders) {
NSArray *nodes = [order children];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:[nodes count]];
for (CXMLElement *node in nodes) {
[dictionary setObject:[node stringValue] forKey:[node name]];
}
[units addObject:dictionary];
}
//[xmlDoc release];
return units;
}
請參閱第2行最後一行[xmlDoc release]
。我已經評論過,因爲如果我不這樣做,它會崩潰。我究竟做錯了什麼?謝謝。
在某些情況下,您無法保留或過度釋放某些內容。泄漏CXMLDocument只是隱藏了問題。你對這個方法返回的數組做了什麼?你能顯示調用這個方法的代碼嗎? – albertamg