我了解到带有 Cocoa 的 Objective-C 是一种编译语言,而 Objective C 需要 Apple Runtime。
首先我很困惑。怎么可能?Objective C 是一种编译语言,它需要运行时应用程序与 Objective C 应用程序一起工作?
如果您了解它的工作原理以及 JRE 和 Objective C 运行时之间的区别,请帮助我。
如果它是一个不错的选择,我想用 Objective C 学习 Java。您对此有何建议?
我了解到带有 Cocoa 的 Objective-C 是一种编译语言,而 Objective C 需要 Apple Runtime。
首先我很困惑。怎么可能?Objective C 是一种编译语言,它需要运行时应用程序与 Objective C 应用程序一起工作?
如果您了解它的工作原理以及 JRE 和 Objective C 运行时之间的区别,请帮助我。
如果它是一个不错的选择,我想用 Objective C 学习 Java。您对此有何建议?
Objective-C 是 C 的超集。当您编写 Objective-C 代码并向实例发送消息时:
[myObject doSomething];
编译器实际上调用了一个适当的函数objc_msgSend(…)
来达到预期的效果。所以运行时更像是一个特定的 API(函数和 sata 结构)。编译器将您的消息转换为对该 API 的调用。
所以,回答你的问题:
推荐读物:
本文档描述了 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 运行时编程指南。