CoreFoundation框架的目的是什么?

时间:2012-07-11 15:49:25

标签: objective-c cocoa core-foundation

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

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

  1. CoreFoundation框架的目的是什么?
  2. Cocoa Framework不能提供所需的所有东西吗?
  3. CoreFoundation Framework是否提供了CocoaFramework无法提供的任何优势?
  4. 这些是我的一些问题。如果有人能够提供答案,或者为我提供阅读资源的资源,那就太棒了。我想知道它是否值得更多地了解该框架。

3 个答案:

答案 0 :(得分:18)

历史:该基金会的日期为~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集合中。

答案 1 :(得分:16)

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

有关更多历史记录以及更多技术性说明,请参阅this article

如果您真的想阅读CoreFoundation源代码,可以参考几个版本的Apple“CFLite”框架作为参考here

答案 2 :(得分:2)

Core Foundation框架提供与Foundation框架相同的功能,但在C而不是Obj-C中,以便它可以与C框架一起使用。

如果你环顾四周,你会看到Apple有一些C框架,如Core Graphics,Core Audio,Address book等。