分析时,iphone App中的内存泄漏

时间:2012-11-28 05:53:46

标签: iphone ios5 memory-leaks

我收到了enter image description here

中显示的内存泄漏信号

我怎么能清楚这一点,请帮助我。

3 个答案:

答案 0 :(得分:0)

试试这个......

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

 if(newString)
      return newString;

答案 1 :(得分:0)

使用

return [newString autorelease];

NSString对象newString已在函数CFURLCreateStringByAddingPercentEscapes中分配。

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

希望这有帮助。

答案 2 :(得分: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;

}