如何将CFStringRef转换为NSString? [英] How to convert CFStringRef to NSString?

查看:188
本文介绍了如何将CFStringRef转换为NSString?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

NSString *aNSString;
CFStringRef aCFString;
aCFString = CFStringCreateWithCString(NULL, [aNSString UTF8String], NSUTF8StringEncoding);
aCFString = CFXMLCreateStringByUnescapingEntities(NULL, aCFString, NULL);

如何获得新的 NSString aCFString

推荐答案

NSString和CFStringRef都是免费桥接

NSString and CFStringRef are "Toll free bridged", meaning that you can simply typecast between them.

例如:

CFStringRef aCFString = (CFStringRef)aNSString;

工作完美透明。同样:

NSString *aNSString = (NSString *)aCFString;

上面的语法是用于MRC的。如果你使用ARC,新的转换语法如下:

The previous syntax was for MRC. If you're using ARC, the new casting syntax is as follows:

NSString *aNSString = (__bridge NSString *)aCFString;

也可以。需要注意的一点是,CoreFoundation通常会返回带有+1引用计数的对象,这意味着它们需要被释放(所有CF [类型]创建格式化函数都会这样做)。

works as well. The key thing to note is that CoreFoundation will often return objects with +1 reference counts, meaning that they need to be released (all CF[Type]Create format functions do this).

很好的是,在Cocoa中,你可以安全地使用autorelease或release来释放它们。

The nice thing is that in Cocoa you can safely use autorelease or release to free them up.

这篇关于如何将CFStringRef转换为NSString?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆