2012-01-27 6 views
1

次のコードがあります。私は、保持/解放の概念について少し不明です。このコードでCFStringRefを公開する場所

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

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); 
} 
関連する問題