Я разбираю некоторые XML с помощью TouchXML, и я получаю crash -EXC_BAD_ACCESS. То, что я узнал из-за проб и ошибок, состояло в том, что если я не выпущу свой CXMLDocument (который я выделил), тогда все будет в порядке. Вот мой код:Weird crash, если я пытаюсь выпустить 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