1

Я написал метод (показано ниже). Проект скомпилирован с использованием ARC, но файл, в котором находится этот метод, должен быть скомпилирован с помощью переключателя -fno-objc-arc из-за зависимости сторонней библиотеки.NSArray componentsJoinedByString Memory Leak

Инспектор утечки говорит мне, что есть утечка на

return [fragments componentsJoinedByString:@" "]; 

Я не могу видеть - я мог попросить еще одну пару глаз, чтобы указать на ошибку моего пути?

Большое спасибо

-(NSString *)trimAndTidy:(NSString *)aString 
{ 
    NSCharacterSet *nsc = [NSCharacterSet characterSetWithCharactersInString:@"\r\n \t"]; 
    NSString *fragment; 
    NSMutableArray *fragments = [NSMutableArray array]; 
    NSScanner *scanner = [NSScanner scannerWithString:aString]; 
    do 
    { 
     if ([scanner scanUpToCharactersFromSet:nsc intoString:&fragment]) 
      [fragments addObject:fragment]; 
    } 
    while (![scanner isAtEnd]); 
    return [fragments componentsJoinedByString:@" "]; 
} 
+0

В коде, который вы отправили, нет утечки. Какое точное сообщение используется инструментом отладки? –

+0

Кодовый фрагмент выглядит хорошо - все автореализовано, в том числе и результат. Как вы используете 'trimAndTidy'? – dasblinkenlight

+0

Как предполагалось, и только предположение, я бы сказал, что это может быть aString. '[x trimAndTidy: [[NSString alloc] init]]' может потребовать утечку в этой строке, потому что это последняя точка, в которой aString находится в области видимости. –

ответ

4

Инспектор утечки говорит вам , где утечка была выделена и не , где утечка была вызвана.

Для того, чтобы найти причину, вам необходимо найти дополнительные retain или release.

+0

Спасибо за помощь - элементарная ошибка - я забыл все о создании метода dealloc, который, конечно, необходим, потому что этот файл скомпилирован без ARC. Как быстро забывается? !!! – drew