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、

  • 相关阅读:
    9.11练习:文件访问,写一个逐页显示文本文件的程序,提示输入一个文件名,每次显示文本文件的25行,暂停并向用户提示“按任意键继续”,按键后继续执行。
    关于将缓冲器内容写入文件
    关于移动文件指针
    关于file.writelines换行符的添加
    石头剪子布游戏
    关于浅拷贝,深拷贝
    关于list.extend(iterable)
    vs2012编译openssl
    Sublime Text 3 安装及插件推荐
    bower--包管理工具
  • 原文地址:https://www.cnblogs.com/feng9exe/p/11677813.html
Copyright © 2011-2022 走看看