看起来Cocoa似乎是Objective-C的主要平台。GCC(Xcode使用的编译器)支持Objective-C,因此它必须在许多平台上可用。
有没有什么著名的跨平台项目使用Objective-C但不使用Cocoa(或其开源版本GNUStep)?它真的被用在苹果生态系统之外吗?
看起来Cocoa似乎是Objective-C的主要平台。GCC(Xcode使用的编译器)支持Objective-C,因此它必须在许多平台上可用。
有没有什么著名的跨平台项目使用Objective-C但不使用Cocoa(或其开源版本GNUStep)?它真的被用在苹果生态系统之外吗?
Objective-C在科学和金融服务社区也很受欢迎。目前仍然有许多基于Objective-C的银行应用程序,主要用于交易分析。我的一个朋友正在开发一个将近一百万行代码的Objective-C分析和交易引擎,他们从头开始编写了自己的类层次结构。
曾经有一段时间,较为流行的Linux窗口管理器是用Objective-C编写的。那是几年前的事情,现在可能不再适用。
LLVM编译器也可以编译Objective-C,并且完全支持Blocks。它也非常便携。
还有David Stes的Portable Object Compiler。它将Objective-C编译为C,并使用基于原始ICPak类层次结构的类层次结构。
看起来您询问的是Objective-C是否在没有Cocoa、GNUstep、Cocotron或任何类似它们的API的情况下被使用。
答案基本上是否定的。没有像Cocoa(或GNUstep等)这样的API,Objective-C就不是很有用。例如,如果没有NSObject,那么retain和release甚至都不存在。许多非常重要的功能都内置在这些API中,因此在没有其中之一的情况下使用Obj-C有点毫无意义。
NSObject
这个非常重要的类是在API中定义的,而不是语言本身(你可能会认为NS
会让人想到...)顺便说一下,我之所以问这个问题是因为我正在考虑将一个纯C项目进行整理,加入一些Obj-C内容,这也引发了我提出这个问题的想法。 - Joe是的,确实有。我能想到的一个是Cocotron。这是一个将AppKit移植到Windows的努力。
除此之外,Objective-C 可以在 gcc 支持的任何平台上使用。虽然您不会拥有在 OS X 或 iPhone 上的 Cocoa 中可用的丰富框架,但正如您所提到的,GNUStep 也做出了相当不错的努力。