8

大多数现代编程语言都有标准库?我的印象是 Obj-C 没有一个体面的标准库,而是它主要/全部依赖于 Cocoa 并且(加上不想使用 GNUstep 的人)这就是为什么 Obj-C 只用于 mac )?

这是真的/在什么程度上?有没有标准的 obj-c 集合?

(请注意,我没有做过任何 Obj-C 编程,并且不太可能在不久的将来尝试它,我只是好奇)。PS 有没有像样的非 Cocoa/Gnustep 库?它们是非苹果的,它们是开源的,有据可查吗?

4

3 回答 3

25

与 Outis 的回答相反,Objective-C 最初并不是在 NeXT 开发的。NeXT 在 80 年代中后期采用 Objective-C 作为首选语言。Objective-C 由 Brad Cox 和 Tom Love 在 80 年代初在 Stepstone 创建。

与这个问题相关的是,当 Cox 和 Love 创建 Objective-C 时,他们的主要目标之一是构建一种可以支持完全组件化的软件模型的语言。也就是说,您可以从某个地方购买软件组件并将其插入您的应用程序以添加功能。

其中开发了 ICPak 101 和 IIRC, 102(或 201,我不记得了),它有点像 Objective-C 的标准库。它从未真正流行起来。

显然,NeXT 和 Apple 一直是 Objective-C 背后的主要推动力,因此,如今 Cocoa 的 Foundation 是 Objective-C 最流行的标准库。它不是唯一的。ICPak 的一些版本仍在使用中,并且有非 NeXT/非 Apple Objective-C 项目实际上相当大。同样,Objective-C 继续被 Linux 上的少数项目使用,主要是通过 GNUStep。

一般来说,Objective-C 旨在成为一种简单而小型的语言。随之而来的是相对简单和小型的库(将 STL 或 Boost 与 Foundation 的大小进行比较)。

如果您搜索“stes 可移植对象编译器”,您会发现 David Stes 延续了 Stepstone 所做的一切,包括一个 ICPak 实现(同样是 IIRC——我已经很长时间没有研究这些东西了)。

于 2010-05-14T15:26:31.350 回答
3

由于 Objective-C 是 C 的扩展(而且是一个相当小的扩展),因此可以使用 C 标准库。除此之外,主库是平台提供的任何东西,这基本上意味着原始的 NeXTSTEP 库及其后代:OPENSTEP、Cocoa、GNUstep、已失效的Coconut这是因为 Objective-C 最初是在 NeXT 开发的,后来被苹果公司接管了. 这些天甚至没有官方标准,只有 Apple 的文档。

在我看来,缺少其他库并不是 Objective-C 主要用于 Mac 开发的原因,而是后者的影响。

于 2010-05-14T11:53:00.553 回答
1

我认为维基百科条目的这一部分(Objective-C 和 C++ 之间的哲学差异)很好地涵盖了这个问题。

于 2010-05-14T11:43:29.897 回答