0

我收到了一个内存泄漏信号,如图所示在此处输入图像描述

我该如何清除这个,请帮助我。

4

3 回答 3

0

利用

return [newString autorelease];

NSString对象 newString在函数中分配CFURLCreateStringByAddingPercentEscapes

因此,此时对象的保留计数为 1。因此,当您重新调整保留对象时,您会收到内存泄漏信号。我们可以将对象添加newString到自动释放池中,以便操作系统负责在正确的时间释放内存。

希望这可以帮助。

于 2012-11-28T06:10:47.107 回答
0

尝试这个...

 NSString *newString = nil;
 CFStringRef stringRef = CFURLCreateStringByAddingPercentEscapes(...);
 newString = (NSString *)stringRef;
 CFRelease(stringRef);

 if(newString)
      return newString;
于 2012-11-28T06:08:18.743 回答
0

使用(__bridge_transfer NSString *)代替(__bridge NSString *)

使用ARC,您可以使用__bridge_transfer将返回字符串的内存管理转移到ARC

例子:

NSString *myString = [self encodeURL:@"hi*)"];
NSLog(@"%@",myString);

-(NSString *)encodeURL:(NSString *)string{

    NSString *newString = @"";        
    newString = (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, CFSTR("^%*)*&%$"),CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));              
    return newString;

}
于 2012-11-28T06:33:40.963 回答