2020年12月1日

010:dyld加载流程-(_dyld_start-dyldbootstrap::start-dyld::_main-dyld::initializeMainExecutable-ImageLoader::runInitializers-ImageLoader::processInitializers-ImageLoader::recursiveInitialization)

摘要: 问题 目录 预备 正文 1:main、load、C++ 的执行顺序 __attribute__((constructor)) void htFunc() { printf("%s \n",__func__); } @interface HTPerson : NSObject @end @implem 阅读全文

posted @ 2020-12-01 21:13 风zk 阅读(407) 评论(0) 推荐(0) 编辑

009:消息流程分析-动态方法决议&消息转发-[resolveInstanceMethod-forwardingTargetForSelector-methodSignatureForSelector-forwardInvocation]

摘要: 问题 1:动态方法决议调用次数? 目录 1:消息发送的流程 2:动态方法决议 3: 消息转发 预备 正文 一:消息发送的流程 1:先去本类的缓存方法列表中查找,核心函数是CacheLookup 2:如果没有找到,就去本类的方法列表中查找, 3:如果当前方法列表还是没有,就通过 superClass指 阅读全文

posted @ 2020-12-01 17:48 风zk 阅读(633) 评论(0) 推荐(0) 编辑

008:消息流程分析之慢速查找-[lookUpImpOrForward-findMethodInSortedMethodList-cache_getImp-resolveInstanceMethod]

摘要: 问题 目录 预备 正文 一:方法的查找顺序 1:实例对象、类对象、元类对象以及根元类对象。它们是通过一个叫 isa 的指针来关联起来。那么消息的慢速查找就是依靠这种关系来进行的。 对象的实例方法的查找(类对象) 自己有找自己的 自己没有 - 找父类的自己没有 - 父类也没有 - NSObject自己 阅读全文

posted @ 2020-12-01 15:49 风zk 阅读(260) 评论(0) 推荐(0) 编辑

007:消息流程分析之快速查找-CacheLookup-【isa-objc_msgSend -CacheLookup-[Cachehit CheckMiss JumpMiss]-__objc_msgSend_uncached-MethodTableLookup-lookUpImpOrForward】

摘要: 问题 1:objc_msgSend原理是什么? 1: objc_msgSend-->> 2: GetClassFromIsa_p16-->> 3: CacheLookup-->> 4: 成功(Cachehit),匹配失败,触发CheckMiss和JumpMiss流程-->> 5: __objc_ms 阅读全文

posted @ 2020-12-01 00:01 风zk 阅读(245) 评论(0) 推荐(0) 编辑

导航