大多数现代编程语言都有标准库?我的印象是Obj-C没有一个体面的大小标准库,而是它主要/全部依赖Cocoa而且(加上不想使用GNUstep的人)是为什么Obj-C仅用于macs )?
这是真的/到什么程度?有没有标准的obj-c集合?
(注意我没有做任何Obj-C编程,并且不太可能在不久的将来尝试它,我只是好奇)。 附:有没有一个像样的非Cocoa / Gnustep图书馆?他们是不是苹果,他们是开源的还是有据可查的?
答案 0 :(得分:26)
与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的基金会是最受欢迎的Objective-C标准库。它不是唯一的;还有一些版本的ICPak正在使用中,而且非NeXT /非Apple Objective-C项目实际上非常庞大。同样,Objective-C继续被Linux上的一些项目使用,主要是通过GNUStep。
一般来说,Objective-C旨在成为一种简单而小巧的语言。其中包括相对简单的小型库(比较STL或Boost与Foundation的大小)。
如果你搜索“stes便携式对象编译器”,你会发现David Stes延续了Stepstone所做的一切,包括一个ICPak实现(再次IIRC - 我很久没有研究过这个东西)。
答案 1 :(得分:3)
由于Objective-C是C的扩展(并且是一个相当小的扩展),因此可以使用C标准库。除此之外,主库是平台提供的任何东西,这基本上意味着原始的NeXTSTEP库及其后代:OPENSTEP,Cocoa,GNUstep,已解散Coconut。 这是因为Objective-C最初是在NeXT开发的,并被Apple 接管。这些天甚至没有官方标准,只有Apple的文档。
在我看来,缺乏其他库不是Objective-C主要用于Mac开发的原因,它是后者的影响。
答案 2 :(得分:1)
我认为维基百科条目的这一部分(philosophical differences between Objective-C and C++)很好地涵盖了这个问题。