Вместо того, чтобы настраивать пул автоматического выпуска, который на самом деле освобождает строку, почему бы вам просто не освободить ее самостоятельно? Если делегат сохраняет строку в getcat:
, вы можете просто освободить ее:
- (void) connectionDidFinishLoading: (NSURLConnection *) connection
{
// Omit the autorelease pool.
NSMutableString * res = [[NSMutableString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding];
[webData release];
[connection release];
[res replaceOccurrencesOfString:@"&" withString:@"&" options:NSCaseInsensitiveSearch range:NSMakeRange(0, res.length)];
[delegate getcat:res];
[res release];
}
Взглянув на getcat:
, я вижу проблему:
[xmlParser parse];
[xmlParser release];
Обычно объектам нужен делегат для возврата результатов из потока. Я предполагаю, что [xmlParser parse] запускает поток. Вы, вероятно, не должны выпускать его до его завершения, то есть вы делаете это в parserDidEndDocument:
.
Это, однако, не объясняет многие утечки строк.