Iphone 在此代码中,在何处释放CFStringRef

Iphone 在此代码中,在何处释放CFStringRef,iphone,ios,memory-management,Iphone,Ios,Memory Management,我有下面的代码。我对保留/发布概念有点不确定 for (int i = 0; i < ABMultiValueGetCount(urls) ; i++) { CFStringRef url = ABMultiValueCopyValueAtIndex(urls, i); CFStringRef urlType = ABMultiValueCopyLabelAtIndex(urls, i); urlString = (NSString *)url; url

我有下面的代码。我对保留/发布概念有点不确定

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]];
    }
}
for(inti=0;i
我有两个问题

  • 在这段代码中,我应该在哪里发布'CFStringRef url'和'CFStringRef urlType'

  • 我是否应该释放“urlString”和“urlTypeString”,它们是字符串类型


  • 在这场比赛的最后


    看看这个:

    在for


    看看这个:

    在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);
    }
    
    for(inti=0;i
    在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);
    }
    
    for(inti=0;i