什么是Class?

时间:2010-06-04 18:02:44

标签: objective-c

来自标题:

typedef struct objc_class *Class;
typedef struct objc_object {
    Class isa;
} *id;

我确实得到了id。它是一个只有一个成员的结构:isa,类型为Class。并且Class被重定向到obj_class,或者是什么? obj_class似乎是一个僵尸。无法弄清楚它是什么。那么现实中的Class是什么?只是一个普通的旧结构?那里有什么?

1 个答案:

答案 0 :(得分:3)

是的,Classstruct,其中包含该特定类所需的所有信息。它是如何在像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的每个特性。