我使用在 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++
- 垃圾收集
- 易于我的设置:也就是说,如果设置和配置开始工作对我来说很痛苦,那没关系,只要工作解决方案符合我的需要并允许我编写简单的代码(根据要求可移植)上面)并且不会将任何痛苦推给我的用户。