java - Objective C 中的类对象

标签 java objective-c

我从 Java 转到 Objective C,类对象的想法让我想知道它与 Java 的相似之处。来自 Apple 文档中的 Objective C 指南:

A class definition's information is compiled and recorded in data structures made available to the runtime systems. The compiler creates just one object, a class object, to represent the class.

所以我的理解是,类对象是为程序将要使用的所有类创建的,而类对象是用来为该类创建对象的。

作为比较,JVM 是否为其加载的所有类都有类似的对象?

最佳答案

鉴于 Java 直接源自 Objective-C(不,确实如此),两者的运行时模型非常相似。

在 Java 中,“类”的概念并不像 Objective-C 中那样通用。

在 Objective-C 中,类是元类的一个实例。出于所有意图和目的,Objective-C 中的每个 Class 对象都完全按照您所说的进行操作;它描述了 Objective-C 运行时中可用的特定类。

Java 类在概念上也是如此。有一个关键的区别。在 Objective-C 中,类方法在子类之间继承,并且更重要的是子类可以覆盖父类(super class)的类方法。

例如,NSArray 类实现了+array 类方法(“+”表示“类方法”)。 NSArrayNSMutableArray 子类覆盖 +array 以返回可变实例。

java.lang.Class 更类似于 Objective-C 运行时 API;它是您检查运行时中可用的类的机制。由于 Java 没有函数式 API,因此该 API 被包装在一个适当命名的类中。 java.lang.Class 有点像是运行时 API 和元类合二为一。

关于java - Objective C 中的类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1928243/

相关文章:

objective-c - 为什么在这种情况下 respondsToSelector 对我不起作用?

ios - 不要将 HMSegmentedControl 与 Storyboard一起使用

objective-c - 使用 Cocoa 或 Carbon 在屏幕上查找单词的框架(位置和大小)

java - RecyclerView 列表不可见

iphone - 如何在核心数据中一次插入多行

java - 获取 'Mobile network' 的状态,wifi 断开后自动连接 3g 的状态

java - 如何在android中的视频 View 上显示音量搜索栏?

objective-c - NSURLRequest 的 mainDocumentURL 和 URL 属性有什么区别?

java - 抛出异常问题

java - 如何在网页上运行 Swing 应用程序?