美文网首页
runtime 分类原理概述

runtime 分类原理概述

作者: 不拘小节123456 | 来源:发表于2021-10-11 17:33 被阅读0次

    简单说就是加载mach-o文件的分类信息和类信息,然后在某些时机把分类信息copy,类信息的rw上,所有才出现了oc上分类方法覆盖类方法的现象

    通过查看源码分类信息copy到类的rw上有三处地方,1realizeClass,2loadCategory,3prepareLoad(之后在调用realizeClass)

    主类是否lazy,分类是否lazy (0-0)(实现了load函数就是非lazy类)
    对于(1-1),在第一次给类发送消息的时候调用relalize在进行attach操作
    对于(0-1),在调用map_images->readImage时对主类进行realize操作,由于还没有加载分类信息,先不进行attach操作在调用load_images->loadAllCategory 读取mach-0的分类信息检查改类是否进行realize,如果进行realize,则进行attach操作,没进行的把先关信息保存到一个map里面
    对于(1-0),在loadAllCategory存储了分类信息,在prepare_load_methods里面会加载unlazy的方法,这个时候回对响应类进行realize操作,并对分类进行attach操作
    对于(0-0),在read_images对主类进行realize,在loadallcategory中对分类进行attach操作

    map_images 参数是数据,一次性回调所有mach-o
    load_images: 挨个回调,其中loadAllCategory一次性加载所有分类信息

    相关文章

      网友评论

          本文标题:runtime 分类原理概述

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