-3

我了解到带有 Cocoa 的 Objective-C 是一种编译语言,而 Objective C 需要 Apple Runtime。

首先我很困惑。怎么可能?Objective C 是一种编译语言,它需要运行时应用程序与 Objective C 应用程序一起工作?

如果您了解它的工作原理以及 JRE 和 Objective C 运行时之间的区别,请帮助我。

如果它是一个不错的选择,我想用 Objective C 学习 Java。您对此有何建议?

4

1 回答 1

2

Objective-C 是 C 的超集。当您编写 Objective-C 代码并向实例发送消息时:

[myObject doSomething];

编译器实际上调用了一个适当的函数objc_msgSend(…)来达到预期的效果。所以运行时更像是一个特定的 API(函数和 sata 结构)。编译器将您的消息转换为对该 API 的调用。

所以,回答你的问题:

  1. Objective-C 不是一种解释性语言,而是像任何其他 C 或 C++ 程序一样在机器上本地运行。运行时不是解释器,而是结构和函数库。
  2. Cocoa是一个框架,不需要编写 Objective-C 程序。
  3. 如果您打算从 MAC 或 iOS(iPhone、iPad)编程,我建议您放弃 Java 并选择 Objective-C。

推荐读物

本文档描述了 OS X Objective-C 2.0 运行时库支持的函数和数据结构。这些函数在位于/usr/lib/libobjc.A.dylib的共享库中实现。这个共享库为 Objective-C 语言的动态属性提供支持,因此被所有 Objective-C 应用程序链接到。

还推荐:

Objective-C 是您在为 OS X 和 iOS 编写软件时使用的主要编程语言。它是 C 编程语言的超集,提供面向对象的功能和动态运行时。Objective-C 继承了 C 的语法、原始类型和流控制语句,并添加了用于定义类和方法的语法。它还为对象图管理和对象文字添加了语言级别的支持,同时提供动态类型和绑定,将许多职责推迟到运行时。

Objective-C 语言将尽可能多的决策从编译时和链接时推迟到运行时。只要有可能,它就会动态地执行诸如创建对象和确定调用什么方法之类的操作。这意味着该语言不仅需要编译器,还需要运行时系统来执行编译后的代码。运行时系统充当Objective-C语言的一种操作系统;这就是使语言起作用的原因。但是,通常不需要直接与运行时交互。不过,要了解有关它提供的功能的更多信息,请参阅 Objective-C 运行时编程指南。

于 2013-04-06T11:33:29.177 回答