stringWithString утечка памяти - PullRequest
       2

stringWithString утечка памяти

0 голосов
/ 14 февраля 2011

Привет У меня есть простая функция, которая в основном возвращает усеченную версию входной строки.Проблема в том, что когда я запускаю инструменты и проверяю утечки, эта функция показывает 100% утечку, особенно в строке stringWithString.

Может кто-нибудь подсказать мне, что я здесь не так делаю.

+ (NSString *) trim:(NSString *)string
{
    if (string == nil)
        return nil;
    NSString *str = [NSString stringWithString:string];
    str = [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    //[[NSString stringWithString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]] autorelease];
    return str;
}

Ответы [ 3 ]

3 голосов
/ 14 февраля 2011

Если этот код выполняется в потоке, убедитесь, что у вас настроен автозапуск.StringWithString возвращает объект автоматического освобождения, и это может произойти только при наличии автоматического выпуска пула для вашего потока.

2 голосов
/ 14 февраля 2011

Единственная причина, по которой я могу подумать, это если вы запускаете этот код из потока порождения, у которого нет NSAutoReleasePool, потому что [NSString stringWithString:string]; отправляет ему сообщение autorelease.

2 голосов
/ 14 февраля 2011

Во-первых, это выглядит абсолютно нормально для меня, вы уверены, что утечка произошла с stringWithString:?

Тогда вам это все равно не нужно.Вы можете просто сделать:

+ (NSString *) trim:(NSString *)string
{
    if (string == nil)
        return nil;

    return [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}
...