没有Mac如何学习Objective C

8

我没有Mac或iPhone。然而,将C语言变得更加动态,向Smalltalk、Python或Ruby的思想靠拢的概念对我非常有吸引力。我很想开始学习Objective C。

Objective C是C语言的语法超集还是真的像C语言一样?也就是说,它可以使用gcc等编译器进行编译吗?

我大多数时候都用Ruby进行编程。Objective C似乎比C语言更容易写。你可以用C语言为Ruby编写本地扩展。你能用Objective C为Ruby编写本地扩展吗?

如果没有Mac/iPhone和XCode,我该如何开始学习Objective C呢?


你在实现用 Objective-C 编写的 Ruby 扩展方面成功了吗?我也开发了一个用 Objective-C 编写的 Ruby 扩展。现在我遇到了新的 Objective-C 异常 (@throw/@catch ...) 的问题。当我使用它们时,我的 Ruby 应用程序在异常第一次出现时会崩溃。我正在使用 GNU 运行时,并且核心转储代码在其中:objc_exception_throw(...) { ... /* 一些类型的回滚错误. */ abort (); } - Tilo Prütz
6个回答

6

维基百科表示:

如今,Objective-C主要用于苹果的Mac OS X和iPhone OS两个环境中。这两个环境是基于OpenStep标准的,但并不兼容该标准。Objective-C是苹果Cocoa API的主要编程语言,但最初它是NeXTSTEP OS上的主要编程语言。如果不使用这些库,也可以将通用的Objective-C程序编译为gcc支持的任何系统,其中包括Objective-C编译器。

如今,Objective-C通常与一组固定的标准对象库(通常称为“kit”或“framework”,例如Cocoa或GNUstep)一起使用。

如果您主要运行Windows系统,建议获取Linux虚拟机并运行GNUStep


3

苹果公司将Objective-C的变更贡献回GCC(虽然他们没有太多选择,因为GCC是GPL)。因此,只要您能设置GCC,就可以设置Objective-C编译器。

除此之外,Gnustep环境可以让您感受到原始的OpenStep/NextStep环境。


2

1

Objective-C语言和苹果公司构建在其之上的框架有所不同。这些框架由一些对象组成,您可以在代码中使用它们,如果您面向的是Mac或iPhone,则尤为有用。GNUStep也提供了一些类似的对象,但它并不能完全替代Cocoa等库,特别是对于任何涉及iPhone的部分都没有涵盖。

GNUStep和Objective-C语言(通过gcc)可用于许多平台,您可以编写自己的程序,使用Objective-C对象并与Objective-C中的任何C API交互。

Objective-C是C的超集,因此并不比C更容易,但可以说比C++(几乎是C的超集)更容易。您还可以使用GCC混合Objective-C和C++,但这会有点复杂,特别是关于异常处理方面。

但是,对于入门和玩转这种语言,GNUStep和GCC是一个不错的选择。


我非常确定Objective-C是C的严格超集,不像C++有一些(但不多)与C有明显区别的地方。 - Chris Lutz
Objective-C 是 C 语言的完全超集,而不是几乎超集。 - Jason Coco
好的,对此我感到抱歉(我比较熟悉C++而不是Obj-C)。我会更正文本,无论如何,从实际角度来看,它们都是C的超集。 - Mike Kale

0

0

我认为你完全可以使用Objective C来编写本地的Ruby扩展,但是这样做并没有太多好处。因为据我所知,目前还没有Ruby到Objective-C的绑定库,所以你仍然需要使用底层的C API调用。此外,Objective C自带了一套相当丰富的实用类库,虽然很有帮助,但在Ruby扩展的上下文中,它们的体积和重量并不容易被证明是合理的。


1
有哪些实用类库?Objective-C 几乎没有自带的。 - Chuck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接