小编典典

如何将 CFStringRef 转换为 NSString?

all

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

我怎样才能得到一个新NSStringaCFString


阅读 125

收藏
2022-08-19

共1个答案

小编典典

NSString 和 CFStringRef 是“免费桥接的”,这意味着您可以简单地在它们之间进行类型转换。

例如:

CFStringRef aCFString = (CFStringRef)aNSString;

完美透明地工作。同样地:

NSString *aNSString = (NSString *)aCFString;

以前的语法是用于 MRC。如果您使用 ARC,则新的强制转换语法如下:

NSString *aNSString = (__bridge NSString *)aCFString;

也可以。需要注意的关键是 CoreFoundation 通常会返回具有 +1 引用计数的对象,这意味着它们需要被释放(所有 CF[Type]Create
格式函数都这样做)。

好消息是在 Cocoa 中,您可以安全地使用 autorelease 或 release 来释放它们。

2022-08-19