下面的代码是非ARC代码,谁能告诉我如何将它转换为ARC代码,它有一个内存泄漏,当我使用它,以编码网址。
#import "NSString+EncodeURIComponent.h"
@implementation NSString (EncodeURIComponent)
+ (NSString*)stringEncodeURIComponent:(NSString *)string {
return [((NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(CFStringRef)string,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8)) autorelease];
}
@end提前谢谢..
发布于 2012-09-17 21:29:36
return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
(__bridge CFStringRef)string,
NULL,
CFSTR("!*'();:@&=+$,/?%#[]"),
kCFStringEncodingUTF8));这将执行以下操作:
使用CFBridgingRelease()将核心基础对象autorelease
Create。原则上(虽然不是实现),Core Foundation执行一个CFRelease(),ARC执行一个objc_retain()._bridge用例来使用string。这将告诉编译器您没有在ARC和Core Foundation之间转移所有权。您只想让核心基金会使用一个ARC variable.CFSTR()来创建一个常量核心基金会字符串。这比创建一个常量NSString,然后桥接将其转换到核心基础要方便得多。请参阅Transitioning to ARC Release Notes中的“管理免费桥接”。
https://stackoverflow.com/questions/12459774
复制相似问题