Ios CFString和NSString之间的区别?

Ios CFString和NSString之间的区别?,ios,objective-c,cocoa,Ios,Objective C,Cocoa,我不了解iOS中CFString和NSString之间的区别。任何人都可以为此提供链接或正确答案。谢谢。 < P> NScord是CFStudio的基础对应部分。这意味着它们在内存中具有完全相同的内存布局 这种架构背后的原因是历史性的,可以追溯到NeXTSTEP和MacOS 9之间的“冲突” 由于该机制,许多CF对象都具有可互换的NS对应项(其他示例包括CFArray/NSArray,CFData/NSData,…),因此从实用角度来看,您可以将它们视为相同的对象 下面是一篇关于这个主题的精彩

我不了解iOS中CFString和NSString之间的区别。任何人都可以为此提供链接或正确答案。谢谢。

< P> <代码> NScord是CFStudio的基础对应部分。这意味着它们在内存中具有完全相同的内存布局

这种架构背后的原因是历史性的,可以追溯到NeXTSTEP和MacOS 9之间的“冲突”

由于该机制,许多CF对象都具有可互换的NS对应项(其他示例包括
CFArray
/
NSArray
CFData
/
NSData
,…),因此从实用角度来看,您可以将它们视为相同的对象

下面是一篇关于这个主题的精彩文章:


以下是我关于如何在ARC环境中执行桥接的回答:

编辑:此回答适用于非ARC环境。

根据iOS开发者库:

CFString与可可基金会的对手NSString“免费搭桥”。这意味着核心基础类型在与桥接基础对象的函数或方法调用中是可互换的。因此,在看到NSString*参数的方法中,可以传入CFStringRef,在看到CFStringRef参数的函数中,可以传入NSString实例。这也适用于NSString的具体子类。有关免费桥接的更多信息,请参阅“免费桥接类型”

将NSString转换为CFStringRef:

NSString *test = @"Everyone is created equal.";
CFStringRef string =  (CFStringRef) test;
NSString *backToNSString =  (NSString *) string;
将CFStringRef转换为NSString:

NSString *test = @"Everyone is created equal.";
CFStringRef string =  (CFStringRef) test;
NSString *backToNSString =  (NSString *) string;

只需在谷歌上写下你的问题:)对不起,粗鲁的评论,但这是非常容易的,非常好的扩展,你会在谷歌上找到:)这可能有助于他们本质上是一样的东西,只是不同的面孔。从NSnScript规范:“NSCORE是免费的桥接”与它的核心基础对应物,CFSTRIGREF。查看更多关于免费桥接的信息。“很好地写了:+ 1的博客。它真的很好。当你有一个免费的桥接类,它不是建立在它的CF对应的,它是它的CF对应。它们共享相同的内存布局,CF甚至有一个isa指针,可以让消息返回到在ARC上不起作用的ObjC内存中。在这里查看我的答案,在这里我解释了正确的桥接转换;)为什么要投票????有什么不对劲吗?????我没有否决你,但正如我所说的那样,这是在ARC中施展的错误方式,它适用于非ARC环境。@Gabrieleptronella:你是对的,我编辑了我的答案:)