以下是 ARC :
下的代码- (NSString*)encodeURL:(NSString *)string
{
NSString *anewString = (__bridge NSString *)(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR(":/?#[]@!$ &'()*+,;=\"<>%{}|\\^~`"), CFStringConvertNSStringEncodingToEncoding([self stringEncoding])));
if (anewString) {
return anewString;
}
return @"";
}
我分析了这段代码,xcode给了我泄密消息。但我不知道如何修复它。 请帮忙!提前致谢!
答案 0 :(得分:2)
CFURLCreateStringByAddingPercentEscapes()
会返回拥有的对象(保留+1的计数)。 __bridge
转换将CF对象桥接到Objective-C但不转移所有权,因此您创建内存泄漏,因为ARC不知道该对象被保留。使用__bridge_transfer
代替_bridge
来转移所有权,以便Objective-C ARC可以为您照顾。
答案 1 :(得分:0)
而不是(__bridge NSString *)(...)
使用CFBridgingRelease( ... )
,而“...”=您的字符串创建。