zoukankan      html  css  js  c++  java
  • 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、

  • 相关阅读:
    什么是Spring Cloud Stream?
    线程池的好处:
    能用HTML/CSS解决的问题就不要使用JS
    功能--web端测试
    Redis 主从复制
    Redis 发布订阅
    Redis 事务
    Redis 持久化
    Redis 安装
    Mybatis Plus 多租户
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11677813.html
Copyright © 2011-2022 走看看