【问题标题】:Learning Objective C without a Mac在没有 Mac 的情况下学习 Objective C
【发布时间】:2010-10-25 10:55:00
【问题描述】:

我没有 Mac 或 iPhone。然而,采用 C 并使其对 smalltalk、python 或 ruby​​ 的想法更具活力的概念对我来说真的很有吸引力。我很想从目标 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-runtime,核心转储代码在其中: objc_exception_throw(...) { ... /* 某种展开错误。 */ 中止 (); }

标签: objective-c ruby frameworks


【解决方案1】:

Wikipedia

今天它主要用于 Apple 的 Mac OS X 和 iPhone OS,两个 环境基于,虽然不是 符合 OpenStep 标准, 它是使用的主要语言 对于 Apple 的 Cocoa API,虽然它是 最初用作主要语言 在 NeXT 的 NeXTSTEP 操作系统上。通用的 不生成的 Objective-C 程序 也可以使用这些库 为任何支持的系统编译 gcc,其中包括一个 Objective-C 编译器。

Objective-C 今天经常用于 与一个固定的库串联 标准对象(通常称为 “工具包”或“框架”),例如 Cocoa 或 GNUstep。

如果您主要运行 Windows 并让GNUStep 运行,也许您应该获得一个 Linux 虚拟机。

【讨论】:

    【解决方案2】:

    apple 将目标 c 更改贡献回 gcc(并不是说他们有太多选择,因为 GPL)。所以无论你在哪里可以设置 gcc,你都可以设置一个 Objective-c 编译器。

    除此之外,Gnustep 环境可以为您提供一点原始 OpenStep/NextStep 环境的味道。

    【讨论】:

      【解决方案3】:

      是的,您可以在 MAC/IPhone 之外编写、编译和运行目标 c 程序

      详情请查看以下链接 http://www.otierney.net/objective-c.html#settingup http://www.faqs.org/faqs/computer-lang/Objective-C/faq/

      【讨论】:

        【解决方案4】:

        Objective-C 语言与 Apple 在它之上构建的框架之间存在差异。这些框架由一堆您可以在代码中使用的对象组成,如果您的目标是 Mac 或 iPhone,它们尤其有用。在 GNUStep 中有一些类似的对象,但它并不能完全替代 Cocoa/etc 库,尤其是不涵盖任何与 iPhone 相关的内容。

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

        Objective-C 是 C 的超集,因此实际上并不比 C 更宽容,但可以说它比 C++(几乎是 C 的超集)更宽容。您也可以将 Objective-C 和 C++ 与 GCC 混合使用,但这会有点复杂,尤其是在异常处理方面。

        不过,如果要开始使用该语言,GNUStep 和 GCC 将是一个不错的选择。

        【讨论】:

        • 我很确定 Objective-C 是 C 的严格超集,不像 C++,它与 C 有一些(但不是很多)干净的突破。
        • Objective-C 是 C 的完整超集,而不是几乎超集。
        • 好的,很抱歉(我对 C++ 比对 Obj-C 更熟悉)。我将更正文本,无论如何从实际的角度来看,两者都是 C 的超集。
        【解决方案5】:

        我看不出有什么令人信服的理由说明你不能将 Objective C 用于原生 ruby​​ 扩展,除非你不会从中受益太多。您仍然必须使用较低级别的 C Api 调用,因为据我所知,objective-c 绑定没有任何红宝石。此外,Objective C 带有一个相当丰富的实用程序类库,虽然很有帮助,但在 ruby​​ 扩展的上下文中不会轻易证明它们的大小和重量。

        【讨论】:

        • 实用类的大量库? Objective-C 几乎什么都没有。
        【解决方案6】:

        您可以在此页面上进行 ObjC 的简单实验:http://www.codesign.cz/LearnObjC/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-02
          • 1970-01-01
          • 1970-01-01
          • 2014-03-29
          • 1970-01-01
          • 1970-01-01
          • 2014-02-26
          相关资源
          最近更新 更多