Я на своем первом опыте разработки iPhone.
Я написал некоторый базовый код для тестирования класса NSScanner, и теперь я изучал инструмент Leaks. Кажется, что этот код протекает, когда в детализированном стеке я дважды щелкаю свой последний вызов (перед вещами Apple), инкриминированная строка - это комментарий.
Может кто-нибудь помочь мне понять, почему это происходит? с логической точки зрения результат - это то, что я ожидаю, и я сам не выделяю ничего формально (за исключением переменной xmlblock, которая, кстати, автоматически выпущена), поэтому я не ожидал бы необходимости что-либо выпускать ... я не прав? : -)
+(NSSet *)extractXMLSectionsWithTag:(NSString *)tag fromString:(NSString *)source firstOnly:(BOOL)firstOnly
{
if (!source)
return nil;
NSScanner *scanner = [NSScanner scannerWithString:source];
NSString *openingToken = [NSString stringWithFormat:@"<%@", tag];
NSString *closingToken = [NSString stringWithFormat:@"</%@>", tag];
NSMutableSet *sections = [NSMutableSet set];
NSCharacterSet *majorChar = [NSCharacterSet characterSetWithCharactersInString:@">"];
while (![scanner isAtEnd]) {
NSString *xmlBlock = [[[NSString alloc] init] autorelease];
[scanner scanUpToString:openingToken intoString:NULL];
[scanner scanString:openingToken intoString:NULL];
[scanner scanUpToCharactersFromSet:majorChar intoString:NULL];
[scanner scanCharactersFromSet:majorChar intoString:NULL];
[scanner scanUpToString:closingToken intoString:&xmlBlock];
if (![xmlBlock isEqualToString:@""]) { // Leaking line
[sections addObject:xmlBlock];
if (firstOnly) {
break;
}
}
}
return [sections copy];
}