Где выпустить CFStringRef в этом коде - PullRequest
1 голос
/ 27 января 2012

У меня есть следующий кусок кода. Я немного не уверен насчет концепции сохранения / выпуска.

for (int i = 0; i < ABMultiValueGetCount(urls)  ; i++) {
    CFStringRef url = ABMultiValueCopyValueAtIndex(urls, i);
    CFStringRef urlType = ABMultiValueCopyLabelAtIndex(urls, i);
    urlString  = (NSString *)url;
    urlTypeString = (NSString *)urlType;
    if ([urlTypeString hasPrefix:@"_"]) {
        NSString * urlTypeSubString = [urlTypeString substringWithRange:NSMakeRange(4, ([urlTypeString length]-8))];
        [mutableArray addObject:[NSString stringWithFormat:@"URL; %@: http://%@",urlTypeSubString,urlString]];
    }else{
        [mutableArray addObject:[NSString stringWithFormat:@"URL; %@: http://%@",urlTypeString,urlString]];
    }
}

У меня есть 2 вопроса.

  1. Где в этом коде следует указывать 'CFStringRef url' и 'CFStringRef urlType'.

  2. Должен ли я освободить 'urlString' и 'urlTypeString', которые являются строковыми типами.

Ответы [ 2 ]

3 голосов
/ 27 января 2012
2 голосов
/ 27 января 2012

В конце вашего цикла for

for (int i = 0; i < ABMultiValueGetCount(urls)  ; i++) 
{
    CFStringRef url = ABMultiValueCopyValueAtIndex(urls, i);
    CFStringRef urlType = ABMultiValueCopyLabelAtIndex(urls, i);
    urlString  = (NSString *)url;
    urlTypeString = (NSString *)urlType;
    if ([urlTypeString hasPrefix:@"_"]) {
        NSString * urlTypeSubString = [urlTypeString substringWithRange:NSMakeRange(4, ([urlTypeString length]-8))];
        [mutableArray addObject:[NSString stringWithFormat:@"URL; %@: http://%@",urlTypeSubString,urlString]];
    }
    else
    {
        [mutableArray addObject:[NSString stringWithFormat:@"URL; %@: http://%@",urlTypeString,urlString]];
    }
    // Release here
    CFRelease(url);
    CFRelease(urlType);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...