文档说:
虽然严格来说不属于
语言,需要 isa 指针
使一个对象能够与
Objective-C 运行时系统。一个东西
需要“等同于”结构体
objc_object(在 objc/objc.h 中定义)
在任何领域的结构
定义。然而,你很少(如果有的话)
需要创建自己的根对象,
以及继承自 NSObject 的对象
或 NSProxy 自动拥有 isa
多变的。
虽然这听起来不错,但我想知道如何在 Objective-C 中创建根对象?
这是出于学习目的。我只想知道这个。我真的很想看看。
这实际上是一些从 C# 或 Java 风格语言迁移的人落入的“陷阱”。您在声明类时根本不指定超类,即
@interface MyNewRoot {
Class isa;
}
@end
vs
@interface MyObject : NSObject {
}
@end
在 Java 或 C# 中,这些是等效的(在第一种情况下,编译器会假设 System.Object 或 java.lang.Object 是超类),但在 Objective-C 中不会假设这样的默认值,因此会创建一个新的根。
然而,您现在负责类的许多您通常认为理所当然的功能(甚至是简单的事情,例如用于分配或销毁新实例的内存管理等)。这就是您引用的评论在谈论 struct objc_object 和 isa 实例变量等时所暗示的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)