Утечка памяти iPhone? - PullRequest
       6

Утечка памяти iPhone?

4 голосов
/ 19 ноября 2010

Действительно быстрый вопрос, который сводит меня с ума.Мне было интересно, если кто-то может сказать мне, почему эта строка протекает?

NSString *post = [NSString stringWithFormat:@"<someXML><tagWithVar=%@></tagWithVar></someXML>",var];
post = [NSString stringWithFormat:@"xmlValue=%@",(NSString *)CFURLCreateStringByAddingPercentEscapes(
                                                                               NULL,
                                                                               (CFStringRef)post,
                                                                               NULL,
                                                                               (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                                               kCFStringEncodingUTF8 )];

Я просто кодирую строку в формате URL.Насколько я понимаю, stringWithFormat: должен возвращать автоматически выпущенный объект.Видимо, это не так.Работает, но подтекает.Есть идеи ??

1 Ответ

15 голосов
/ 19 ноября 2010

Вы используете метод CFURLCreateStringByAddingPercentEscapes.Если в базовой функции есть имя «Создать», это означает, что вы являетесь владельцем возвращаемого объекта.Другими словами, вам нужно освободить CFStringRef, возвращаемое CFURLCreateStringByAddingPercentEscapes.

NSString *post = [NSString stringWithFormat:@"...", var];
CFStringRef stringRef = CFURLCreateStringByAddingPercentEscapes(...);
post = [NSString stringWithFormat:@"xmlValue=%@",(NSString *)stringRef];
CFRelease(stringRef);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...