1

我使用在 OSX 和 iOS(Xcode 3.5 so,GCC)、Linux (GCC) 和 Windows (Vis Studio 2010) 上运行的 C++ 编写了大部分游戏引擎。它使用 stl 向量来收集对象。它实现了消息传递。该引擎在 iOS 平台上使用 OpenGL,最终将在所有平台上使用 OpenGL,并可能在 Windows 上使用 DirectX。

我真的不喜欢C++,虽然我对它有很深的理解。我是一名 C 程序员,一年前介绍了 Objective-C 后,我意识到它非常适合我的工作和思考方式。所以切换到Objective-C对我来说是一个巨大的优势。不幸的是,OSX/Cocoa 的美丽世界并不是 Windows 或 Linux 的现实……或者是吗?

我相信 Cocoa/Apple/NeXT 的布道者会在这里为我提供一个答案的杰作

编辑:

看起来 Cocotron 和 GNUstep 是两个选项,GNUstep 更成熟,但似乎有更多包袱,例如需要运行时。

我需要一个可以满足这些要求的解决方案:

  • 能够在所有平台上编译、运行、调试Objective-C
  • 能够在所有平台上使用 Cocoa API 调用(即 NSString、NSNumber..)
  • 最终用户应该能够安装和运行我的应用程序而无需安装任何额外的东西,或者至少我的安装程序应该能够轻松且非普遍地安装任何东西(例如运行时)GNUstep 需要运行时,Cocotron 不需要
  • 解释我可能遇到的问题。例如,我能否使用提供的 Cocoa 材料来解析 XML?那么CFSocket呢?CG呢?解决方案在哪里结束,我进入了未移植的特定于操作系统的库领域?

理想的:

  • 可以在所有平台上支持闭包(块),以便我可以在 GCD 和 libdispatch 可用时使用它,即使它归结为非本地平台上效率较低的情况
  • 一个允许核心数据类型数据管理的 API(我在这里做梦),即使它归结为在非本地平台上效率较低的情况
  • 一个可能会使用 LLVM 的前瞻性解决方案,因为这似乎是事情发展的方式

不要求:

  • GUI 功能,例如绘图 NSView 等
  • IDE 功能,OSX 除外
  • Objective-C 2.0
  • 目标-C++
  • 垃圾收集
  • 易于我的设置:也就是说,如果设置和配置开始工作对我来说很痛苦,那没关系,只要工作解决方案符合我的需要并允许我编写简单的代码(根据要求可移植)上面)并且不会将任何痛苦推给我的用户。
4

3 回答 3

2

Cocotron 绝对是一款非常出色的软件,目前为止可以满足我的所有需求。虽然文档很差,很难理解和开始工作,但它非常值得而且非常棒。

LLVM/blocks/libdispatch 似乎还不是很现实,虽然它可能是,但我认为在切换到 Xcode 4 时它肯定会很现实。这真的归结为 minGW 与 LLVM 一起工作。

甚至还有一个核心数据的实现..哇

于 2011-02-19T20:03:26.247 回答
0

使用 libdispatch 现在可以在 Linux 上使用 clang + 块(闭包)

sudo apt-get install libblocksruntime-dev

clang test.c -fblocks -lBlocksRuntime -o test

于 2013-12-30T04:54:36.620 回答
0

Objective-C 在 GCC 可用的任何平台上都可用,当然它与 Apple 使用的 GCC Objective-C 编译器不同。Cocoa 以及与之相伴的所有 OSX/iOS 优点,不是吗,这是 Objective-C 在非 OSX 平台上没有被大量采用的主要原因,没有像 Cocoa 这样真正强大的跨平台库-平台。GNUstep是一个类似于 Cocoa 的开源标准库,但它已经持续了 10 多年,仍然不完整,它基于 OpenStep,它与 Cocoa 相去甚远,因此不相关。还有一种叫Cocotron这是最近的,但看起来仍然不完整。Xcode 可能是唯一好的 Objective-C IDE。我确信互联网上的某个地方可能有一些不起眼的 Eclipse 插件项目,但它永远无法与 Xcode 竞争。我怀疑任何东西都会给你 OSX 之类的跨平台 GUI 应用程序,你最好的选择是围绕 QT 编写 Objective-C 绑定以用于跨平台 GUI,但这需要 GCC 编译器能够编译 Objective-C++。

于 2011-02-18T17:31:10.727 回答