来自标题:
typedef struct objc_class *Class;
typedef struct objc_object {
Class isa;
} *id;
我确实得到了id。它是一个只有一个成员的结构:isa,类型为Class。并且Class被重定向到obj_class,或者是什么? obj_class似乎是一个僵尸。无法弄清楚它是什么。那么现实中的Class是什么?只是一个普通的旧结构?那里有什么?
答案 0 :(得分:3)
是的,Class
是struct
,其中包含该特定类所需的所有信息。它是如何在像C这样的环境中实现面向对象的范例,默认情况下不允许它。
我建议你看看Object-Oriented Programming with ANSI C(PDF),它以一种非常复杂的方式解释了如何在C中实现面向目标。
通常Class
结构将包含以下内容:
Class super_class
const char *name
long version
long info
long instance_size
struct objc_ivar_list *ivars
struct objc_method_list **methodLists
struct objc_cache *cache
struct objc_protocol_list *protocols
我正在引用ObjectiveC本身(这是/usr/include/objc/runtime.h
)。这就是如何定义一个类 UNTIL ObjC 2.0 。它只是给你一个想法..
需要此结构来允许RTTI,动态调用和继承,否则您不需要知道在运行时使用哪个对象(具有指向其Class
定义的指针)。
请记住,ObjC是C的超集,因此它通过在其上构建复杂的OOP来利用C的每个特性。