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、

  • 相关阅读:
    电商网站测试总结
    web测试总结—用户体验
    测试用例的常用方法
    linux系统中如何查看日志 (常用命令)
    web与app测试的区别
    Json模块dumps、loads、dump、load函数介绍
    postman—集成到jenkins
    Postman—命令执行脚本及生成报告
    Postman—测试脚本
    Postman—前置请求脚本
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11677813.html
Copyright © 2011-2022 走看看