Я пишу приложение, которое использует NSXMLParser для анализа информации с веб-сайта и сохранения ее в моем приложении.Я выпускаю синтаксический анализатор, который я создаю в своем блоке @finally, но Instruments все еще показывает его как утечку памяти.Поведение приложения, кроме этого, идеально.Вот код:
NSXMLParser *myParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL]; //<--memory leak
@try {
if (myParser != nil)
{
[myParser setDelegate:self];
[myParser setShouldProcessNamespaces:NO];
[myParser setShouldReportNamespacePrefixes:NO];
[myParser setShouldResolveExternalEntities:NO];
}
[myParser parse];
}
@catch (NSException * e) {
NSLog(@"%@, %@",[e name], [e reason]);
}
@finally {
[xmlURL release];
[myParser release];
}
Любые рекомендации относительно того, почему это проявляется как утечка памяти?
** EDIT ***
Ниже приведен метод делегата, который я реализовал в своем коде:
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI
(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
if ([elementName isEqualToString:@"Cube"])
{
if ([attributeDict objectForKey:@"time"])
{
NSArray *pathsArray =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [pathsArray objectAtIndex:0];
NSString *timePlistPath = [NSString stringWithString:
[path stringByAppendingString:@"/time.plist"]];
NSString *TimeString = [attributeDict objectForKey:@"time"];
[TimeString writeToFile:timePlistPath atomically:YES
encoding:NSUnicodeStringEncoding error:nil];
}
if ([attributeDict objectForKey:@"currency"] && [attributeDict objectForKey:@"rate"])
{
NSString *currencyObject = [attributeDict objectForKey:@"currency"];
NSString *rateObject = [attributeDict objectForKey:@"rate"];
[mAryCurrency addObject:currencyObject];
[mAryRates addObject:rateObject];
}
}
}
Может ли это быть причиной утечки