Я только заканчиваю свое приложение, поэтому приступаю к запуску инструментов для выявления утечек в приложении. Я столкнулся с утечкой, которую не могу понять, почему она регистрируется как утечка.
Например, у меня есть следующие строки:
NSString *imageType = [[[NSString alloc] initWithString:[loopString substringToIndex:[loopString rangeOfString:@"</IMAGE>"].location]] autorelease];
imageType = [imageType substringFromIndex:[imageType rangeOfString:@"<IMAGE>"].location + :@"<IMAGE>".length];
Таким образом, в основном все, что я делаю, - это вытаскивание части «петли» и помещение ее в строку типа изображения, а не просто отрезание конечного пуха строки с помощью метода SubstringFromIndex.
Когда я запускаю инструменты, он говорит об утечке «NSCFString substringwithRange». Он выделяет вторую строку:
imageType = [imageType substringFromIndex:[imageType rangeOfString:@"<IMAGE>"].location + :@"<IMAGE>".length];
Я думаю, что метод substringFromIndex должен возвращать строку, которая автоматически добавляется в пул автоматического выпуска.
Любые идеи о том, где я ошибаюсь?
Спасибо
Ниже приведен рефакторинговый код:
- (void)SetupTop10:(NSString *)Top10Data
{
while (Top10Data != @"") {
NSLog(Top10Data);
if ([Top10Data rangeOfString:@"</TOP10ENTRY>"].location == NSNotFound){
Top10Data = @"";
}
else
{
NSString *loopString = [Top10Data substringToIndex:[Top10Data rangeOfString:@"</TOP10ENTRY>"].location + 13];
Top10Data = [Top10Data stringByReplacingOccurrencesOfString:loopString withString:@""];
//NOW CREATE A RECORD FOR THIS ITEM
NSString *imageType = [loopString substringToIndex:[loopString rangeOfString:@"</IMAGE>"].location];
imageType = [imageType substringFromIndex:[imageType rangeOfString:@"<IMAGE>"].location + 7];
NSString *displayText = [loopString substringToIndex:[loopString rangeOfString:@"</DISPLAYTEXT>"].location];
displayText = [displayText substringFromIndex:[displayText rangeOfString:@"<DISPLAYTEXT>"].location + 13];
NSString *link = [loopString substringToIndex:[loopString rangeOfString:@"</INTERESTID>"].location];
link = [link substringFromIndex:[link rangeOfString:@"<INTERESTID>"].location + 12];
[Top10Images addObject:imageType];
[Top10Links addObject:link];
[Top10s addObject:displayText];
Top10RowCount = Top10RowCount + 1;
}
}
[self.Top10Table reloadData];
Top10Table.hidden = NO;
loadingLabel.hidden = YES;
loadingIndicator.hidden = YES;
}
//******************
Top10Data, так как вы, возможно, изменяете его? - person Rengers   schedule 11.08.2010