美文网首页
iOS runtime笔记一

iOS runtime笔记一

作者: 黑羽肃霜 | 来源:发表于2016-09-10 23:36 被阅读149次

    参考资料

    南峰子的runtime 一
    【OC刨根问底】Runtime简单粗暴理解

    对象的理解,元类(meta class)isa

    iOS机制中,对象包括:类对象和实例对象

    • 实例对象
      • 对于实例对象,isa是在分配内存等初始化操作的时候创建的.分配内存的时候创建了一个结构体,objc_objcet,体内有一个isa指针,指向本对象所属的类(或者说类对象),同时生成的id指针指向自己。
    • 类对象
      • 所有的类本身也是一个对象,类对象所属的类,叫做元类 meta class, isa指向meta class
      • 类中所有的方法,包括实例化方法和类方法,都存放在meta class中, meta classisa最终指向根类的meta class
      • NSObjectmeta class指向本身
    • 这里需要注意的是:我们在一个类对象调用class方法是无法获取meta-class,它只是返回类而已。
    • 参照下图,


      示意图

    示例说明

    [[NSObject alloc] init]

    • NSObject是一个类对象, + alloc是一个类方法, [NSObject alloc] isa先找到NSObjectmeta class中有没有alloc方法.
    • [[NSObject alloc]返回了一个实例化对象. isa就指向了这个对象所属的类,还是NSObject,去找有没有init方法。

    相关文章

      网友评论

          本文标题:iOS runtime笔记一

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