在我看来,它并非如此。当然,我没有Foundation的资料,但是如果使用GNUStep,请举这个例子。

他们有这样的NSArray代码
https://github.com/gnustep/libs-base/blob/master/Source/NSArray.m

在源代码中无处引用CFArray。

https://github.com/gnustep/libs-corebase/blob/master/Source/CFArray.c

所有CF对应对象也是如此。
为什么?

最佳答案

GNUstep的Foundation类不使用Core Foundation。 GNUstep最初是OpenStep specificiation的免费开源实现。 Foundation和AppKit类均源自OpenStep规范。尽管GNUstep的目标是赶上当前版本的Cocoa(根据GNUstep的Wiki承诺与Mac OS X Tiger兼容,并且一些新版本的macOS的类和方法已添加到GNUstep中),但我的理解是GNUstep没有任何Core Foundation依赖项。我发现了一个有趣的2005 mailing list post,讨论了GNUstep不使用Core Foundation的原因。

苹果在1998年宣布其Mac OS X战略时,它为开发人员提供了两个API:Cocoa(它是Foundation和AppKit库的更新版本)和Carbon(这是从经典Macintosh Toolbox派生而来的C API),它们被更新为适用于具有抢先式多任务和受保护内存的操作系统。 Carbon和Cocoa都是在Core Foundation的基础上构建的,Core Foundation为这两个API提供了通用的桥梁。 Carbon和Cocoa在Mac OS X中是同等地位的,两个API都不比另一个更受青睐。

因此,简而言之,Core Foundation被添加到Mac OS X中,作为可可和Carbon之间的兼容性桥梁。但是GNUstep本质上是现代的OpenStep,而OpenStep从来没有Core Foundation,因此GNUstep的Foundation不使用Core Foundation。

关于cocoa - 基金会是否使用Core Foundation?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46139713/

10-15 00:05