我已经使用NSObjects等在Objective-C Cocoa中编程了一段时间。我看到还有另一个框架: CoreFoundation 。当我看一遍时,它似乎是一个C-风格框架。
所以我有一些好奇心我想澄清一下。我用谷歌搜索,但没有找到直接答案。
这些是我的一些问题。如果有人能够提供答案,或者为我提供阅读资源的资源,那就太棒了。我想知道它是否值得更多地了解该框架。
答案 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等。