首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSString+EncodeURIComponent

NSString+EncodeURIComponent
EN

Stack Overflow用户
提问于 2012-09-17 21:01:58
回答 1查看 1.8K关注 0票数 0

下面的代码是非ARC代码,谁能告诉我如何将它转换为ARC代码,它有一个内存泄漏,当我使用它,以编码网址。

代码语言:javascript
复制
#import "NSString+EncodeURIComponent.h"

@implementation NSString (EncodeURIComponent)

+ (NSString*)stringEncodeURIComponent:(NSString *)string {
    return [((NSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                                                (CFStringRef)string,
                                                                NULL,
                                                                (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                                                kCFStringEncodingUTF8)) autorelease];
}

@end

提前谢谢..

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-17 21:29:36

代码语言:javascript
复制
return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
                                            (__bridge CFStringRef)string,
                                            NULL,
                                            CFSTR("!*'();:@&=+$,/?%#[]"),
                                            kCFStringEncodingUTF8));

这将执行以下操作:

使用CFBridgingRelease()将核心基础对象autorelease

  • Pass
  • 移除到ARC。这就平衡了Create。原则上(虽然不是实现),Core Foundation执行一个CFRelease(),ARC执行一个objc_retain().
  • Add a _bridge用例来使用string。这将告诉编译器您没有在ARC和Core Foundation之间转移所有权。您只想让核心基金会使用一个ARC variable.
  • Use CFSTR()来创建一个常量核心基金会字符串。这比创建一个常量NSString,然后桥接将其转换到核心基础要方便得多。

请参阅Transitioning to ARC Release Notes中的“管理免费桥接”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12459774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档