Objective-C is a class-based object system. Each object is an instance of some class; the object's isa pointer points to its class. That class describes the object's data: allocation size and ivar types and layout. The class also describes the object's behavior: the selectors it responds to and instance methods it implements.

 

 

 

一、运行时结构系统

typedef struct objc_class *Class;

typedef struct objc_object *id;

 

struct objc_class {

    Class isa  OBJC_ISA_AVAILABILITY;

}

 

struct objc_object {

    Class isa  OBJC_ISA_AVAILABILITY;

};

 

1、Class本身是一个类型结构,定义了类类型的组成和存储形式;

 

2、oc的类信息在编译时被编译为class的实例;即将oc的类信息保存在一个Class实例的结构中。

struct objc_class {

    Class isa  OBJC_ISA_AVAILABILITY;

    #if !__OBJC2__

    Class super_class                                        OBJC2_UNAVAILABLE;

    const char *name                                         OBJC2_UNAVAILABLE;

    long version                                             OBJC2_UNAVAILABLE;

    long info                                                OBJC2_UNAVAILABLE;

    long instance_size                                       OBJC2_UNAVAILABLE;

    struct objc_ivar_list *ivars                             OBJC2_UNAVAILABLE;

    struct objc_method_list **methodLists                    OBJC2_UNAVAILABLE;

    struct objc_cache *cache                                 OBJC2_UNAVAILABLE;

    struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;

    #endif

} OBJC2_UNAVAILABLE;

 

3、oc的对象在创建时,会与它的类型信息进行关联。

isa;

 

二、运行时构建系统

isa

method

 

三、运行时执行(解释)系统

 

1、查找执行系统

_objc_msgSend

objc_msgSendSuper

the superclass at which to start searching for the method implementation

 

2、解释转发系统

_objc_msgForward

 

ForwardInvocation

 

3、

 


------------------越是喧嚣的世界,越需要宁静的思考------------------ 合抱之木,生于毫末;九层之台,起于垒土;千里之行,始于足下。 积土成山,风雨兴焉;积水成渊,蛟龙生焉;积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。骐骥一跃,不能十步;驽马十驾,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓无爪牙之利,筋骨之强,上食埃土,下饮黄泉,用心一也。蟹六跪而二螯,非蛇鳝之穴无可寄托者,用心躁也。