iOS runtime笔记一

参考资料

南峰子的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方法。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容