NSString *aNSString; CFStringRef aCFString; aCFString = CFStringCreateWithCString(NULL, [aNSString UTF8String], NSUTF8StringEncoding); aCFString = CFXMLCreateStringByUnescapingEntities(NULL, aCFString, NULL);
我怎样才能得到一个新NSString的aCFString?
NSString
aCFString
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 来释放它们。