NSString stringByReplacingOccurferencesOfString leak - PullRequest
2 голосов
/ 26 июня 2010

Я получаю NSCFString для кода ниже:

NSString *urlString;

/*  leak showing below line */

urlString = [urlString stringByReplacingOccurrencesOfString:@"\n" withString:@""];

Как вы решаете эту утечку?

Ответы [ 3 ]

1 голос
/ 26 июня 2010

Вы должны сделать указатель выделения строки вместо статического выделения.Измените:

NSString urlString;

на:

NSString *urlString;

Также, похоже, есть какой-то другой код, который инициирует urlString к некоторому значению, которому вы выполняете операцию замены.

0 голосов
/ 22 мая 2012

это мой код, сделайте все, что вы хотите, я заменил на пробел, но вы можете заменить на пустую строку (@ "")

    NSString  * str_aLine;
    str_aLine = @"sometext \n and \t     and on";
    // replace tabs to space
    str_aLine = [str_aLine stringByReplacingOccurrencesOfString:@"\t" withString:@" "];
    // replace \n to space
    str_aLine = [str_aLine stringByReplacingOccurrencesOfString:@"\n" withString:@" "];
    // replace \r to space
    str_aLine = [str_aLine stringByReplacingOccurrencesOfString:@"\r" withString:@" "];
    // reduce spaces to one space
    str_aLine = [str_aLine stringByReplacingOccurrencesOfString:@" +" withString:@" " options:NSRegularExpressionSearch range:NSMakeRange(0, str_aLine.length)];
    // trim begin and end from white spaces
    str_aLine = [str_aLine stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
0 голосов
/ 26 июня 2010

Скорее всего, вы создали свою строку urlString, используя +alloc/initWith....Если это так, то вы владеете ссылкой urlString и несете ответственность за ее публикацию в какой-то момент.Однако, когда вы попадаете на строку, вставленную в вопросе, вы перезаписываете ссылку urlString новой строкой, поскольку stringByReplacingOccurrencesOfString:withString: возвращает новый строковый объект (т. Е. Он не изменяет строку на месте).

Я бы рекомендовал вместо этого использовать NSMutableString, что позволяет манипулировать строками на месте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...