Я новичок в программировании для iPhone и запускаю свое приложение на инструменте Leaks в Инструментах. Инструмент обнаруживает несколько утечек, каждая из которых, по-видимому, указывает на 1 строку кода в классе, который использует NSXMLParser:
- (BOOL)parse{
NSURL *url = [[NSURL alloc] initWithString:@"[url here]"];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
NSLog(@"NSXMLParser initialized");
[parser parse];
[url release];
[parser release];
return YES;
}
Инструмент указывает на линию, создающую синтаксический анализатор как имеющую утечку:
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
Кто-нибудь может указать мне правильное направление на этом? Я уже целый час провожу подсчет ссылок в своем коде, но безуспешно.
UPDATE:
Хорошо, принимая предложения из 2 ответов, я добавил эти строки перед созданием NSURL:
[[NSURLCache sharedURLCache] setMemoryCapacity:0];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
И я добавил эту строку прямо перед выпуском парсера:
[parser setDelegate:nil];
Каждое добавление уменьшало количество утечек, и теперь я уменьшился до 2. Один указывает на CFNetwork и один указывает на Foundation как ответственную библиотеку. Изучение стека вызовов на обоих не показывает никакого моего кода вообще.
Есть что-нибудь еще, что я мог бы сделать здесь неправильно?