2012-09-29 42 views
1

我在分析我的代码时遇到了问题。+(NSString *)decodeFromPercentEscapeString :(NSString *)字符串潜在泄漏

特别对这种方法。

我把这条线放在网上。它运作良好,但我得到了一个潜在的泄漏信息

对象的潜在泄漏。 (在返回)。

// Encode a string to embed in an URL.  
+ (NSString *)encodeToPercentEscapeString:(NSString*)string { 
     return (NSString *) 
     CFURLCreateStringByAddingPercentEscapes(NULL, 
               (CFStringRef) string, 
               NULL, 
               (CFStringRef) @"!*'();:@&=+$,/?%#[]", 
               kCFStringEncodingUTF8); 
    } 

    // Decode a percent escape encoded string. 
    + (NSString *)decodeFromPercentEscapeString:(NSString *)string { 
     return (NSString *) 
     CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, 
                   (CFStringRef) string, 
                   CFSTR(""), 
                   kCFStringEncodingUTF8); 
    } 

谢谢。

回答

1

我刚刚发现这个帖子: iPhone memory leaking?

我不得不释放与CFRelease的CFString字符串();

+ (NSString *)encodeToPercentEscapeString:(NSString*)string { 

    CFStringRef str = CFURLCreateStringByAddingPercentEscapes(NULL, 
              (CFStringRef) string, 
              NULL, 
              (CFStringRef) @"!*'();:@&=+$,/?%#[]", 
              kCFStringEncodingUTF8); 


    NSString *s = [NSString stringWithString:(NSString *)str]; 
    CFRelease(str); 

    return s; 
}