美文网首页
iOS之Runtime运行时

iOS之Runtime运行时

作者: 皮特儿 | 来源:发表于2016-07-18 13:34 被阅读33次

    objc_method:{1.sel name    2.IMP 实现该函数的指针}

    objc_ivar:{1.成员变量结构体}

    objc_category:{1.分类结构体}

    objc_property:{1.属性结构体}

    objc_class:

    1.isa指针:指明class的类型

    2.superclass:父类,根类时,可以为空

    3.ivars:成员变量的链表

    4.cache:方法缓存

    5.protocols:协议的链表

    6.methodList:方法定义的链表

    objc_object与id:id是指向objc_object的一个指针

    objc_cache:

    1.mask:缓存的总数

    2.occupied:实际占用的总数

    3.buckets:method指针的数组

    [[TestClass alloc] init]->运行时会被编译为:objc_msgSend("TestClass", "alloc")......

    runtime常见用于:字典转模型、方法的交换、动态添加属性、微信实现需要的功能(抢红包)

    class执行一个函数:先从cache中查找有没有这个函数,有就直接拿出来使用;否则,从methodList中遍历查找,找到了就拿出来执行,并添加到cache缓存中,然后返回;否则再递归从superclass从查询,直到找到为止;当superclass为空时还没有找到方法,就会报出常见的错误:unrecognized selector sent to instance iphone

    相关文章

      网友评论

          本文标题:iOS之Runtime运行时

          本文链接:https://www.haomeiwen.com/subject/xubpjttx.html