我收到了
中显示的内存泄漏信号我怎么能清楚这一点,请帮助我。
答案 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;
}