CoreFoundation框架的目的是什么?

iOS*_*com 22 cocoa objective-c core-foundation

我使用NSObjects等在Objective-C Cocoa中编程了一段时间.我看到还有另一个框架:CoreFoundation.我看一下,它似乎是一个C风格的框架.

所以我有一些好奇心,我想澄清一下.我用谷歌搜索,但没有找到直接答案.

  1. CoreFoundation框架的目的是什么?
  2. Cocoa Framework不提供已经需要的所有东西吗?
  3. CoreFoundation Framework是否提供了CocoaFramework无法提供的任何优势?

这些是我的一些问题.如果有人能够提供答案,或者为我提供阅读资源的资源,那就太棒了.我想知道它是否值得更多地了解该框架.

bbu*_*bum 20

历史:该基金会的日期为~1993/1994,其中的API是NeXT发布的OpenStep API的一部分.

CoreFoundation框架的目的是什么?

CF是在Mac OS向Mac OS X过渡期间创建的,以帮助支持该过渡.最初,它既是为了速度而又是为了允许编写纯粹的非Objective-C程序.随着时间的推移,这被证明是一个非问题,CF有越来越多的位在Objective-C中实现(使用类似otool的东西看看CoreFoundation二进制文件).

CFLite是一种轻质,便携,纯C(IIRC)型号.

Cocoa Framework不提供已经需要的所有东西吗?

或多或少.而且,当然还可以在iOS或OS X上构建GUI应用程序.

CoreFoundation Framework是否提供了CocoaFramework无法提供的任何优势?

几个,但通常以降低简单性和增加脆弱性为代价.

例如,CF集合允许您完全自定义如何管理内存和标识对象; 您可以提供自定义分配/免费/散列/比较挂钩.通过这种方式,您可以"轻松"将非Objective-C类型封装在CF集合中.


Mat*_*ing 19

CoreFoundation不仅仅是基于C语言的替代基金会.在过度简化的术语中,Foundation基本上 CoreFoundation,因为一个建立在另一个之上.Foundation中的许多类都只是围绕CoreFoundation对应的轻量级Objective C包装器,这就是免费桥接的工作方式(例如CFString和NSString).

有关更多历史记录和更多技术说明,请参阅此文章.

如果你真的想读的CoreFoundation源,苹果的"CFLite"框架的几个版本可供参考这里.

  • @ user76859403没问题,请寻求bbum的答案。这是最好的。 (2认同)