oc的运行时系统

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.

https://www.cnblogs.com/feng9exe/p/7232915.html

一、运行时结构系统

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、

原文地址:https://www.cnblogs.com/feng9exe/p/11677813.html