Я относительно новичок в цели C и, исходя из Java, управление памятью мне не дошло.
Я использую libxml2 для анализа XML-данных, и когда я запускаю свою программу с инструментами производительности, яполучить утечки памяти, и это говорит, что Ответственная Библиотека - libxml2.2.dylib.
Ниже кода, где я использую библиотеку xml.Кто-нибудь видит очевидные ошибки, которые я делаю?Дайте мне знать, если вам нужно больше деталей.
Приветствия, Стефан
- (void)fetchedXML:(GTMHTTPFetcher *)fetcher finishedWithData:(NSData *)retrievedData error:(NSError *)error{
if (retrievedData) {
if(error==nil){
NSString *xpathQueryString = nil;
NSArray *nodes = nil;
//get total amount of persons
xpathQueryString = @"//data/Person";
nodes = PerformXMLXPathQuery(retrievedData, xpathQueryString);
int personCount = [nodes count];
for (int i=1; i<=personCount; i++) {
NSString *position = [NSString stringWithFormat:@"%d", i];
NSArray *matchNodes = nil;
xpathQueryString = [NSString stringWithFormat:@"//data/Person[%@]/FirstName/text()", position];
matchNodes = PerformXMLXPathQuery(retrievedData, xpathQueryString);
NSString *personFirstName = [XMLHelper fetchContent:matchNodes];
xpathQueryString = [NSString stringWithFormat:@"//data/Person[%@]/LastName/text()", position];
matchNodes = PerformXMLXPathQuery(retrievedData, xpathQueryString);
NSString *personLastName = [XMLHelper fetchContent:matchNodes];
xpathQueryString = [NSString stringWithFormat:@"//data/Person[%@]/Job/text()", position];
matchNodes = PerformXMLXPathQuery(retrievedData, xpathQueryString);
NSString *personJob = [XMLHelper fetchContent:matchNodes];
[Person storePerson:managedObjectContext personId:position firstName:personFirstName lastName:personLastName job:personJob];
}
}
}
}
Это код в классе LinkHelper.
+ (NSString *)fetchContent:(NSArray *)nodes {
NSString *result = nil;
for ( NSDictionary *node in nodes ) {
for ( id key in node ) {
if( [key isEqualToString:@"nodeContent"] ) {
result = [node objectForKey:key];
}
}
}
return result;
}