美文网首页
消息机制

消息机制

作者: 沁晓Chr | 来源:发表于2015-12-21 21:16 被阅读25次

对于OC的函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。

当OC对象调用一个方法时,动态调用,根据实例对象(本质上是一个有isa指针指向类对象的结构体)的isa指针找到实例的类对象,(如果是对象方法就在实例的类对象方法列表中,如果是类方法,则还要往上找元类)然后从方法列表中选择对应的SEL,通过SEL(选择器)调用方法,实际是SEL,只是具体实现方法的索引值(通过它找到IMP(具体实现的函数指针)

首先会去类对象的方法缓存列表中查找,如果找到了就调用该方法(实际找到的是一个函数指针(IMP),比较OC底层就是C),如果没有找到就到类对象的方法列表中查找,如果还没有找到,就到对象的父类对象中查找,重复上一步的动作,如果一直到最后还是没有找到的话,程序会崩溃

当没有找到实现方法时,会调用如下函数。

//动态方法解析

+(BOOL) resolveInstanceMethod:(SEL)selector

+(BOOL)resolveClassMethod:(SEL)sel

//备用接收者

-(id)forwardingTargetForSelector:(SEL)aSelector

//完整地消息转发

-(NSMethodSignature*)methodSignatureForSelector:(SEL)aSelector

-(void)forwardInvocation:(NSInvocation *)anInvocation

当没有找到实现方法时,OC的处理可以从下面链接找到,写得不错

IOS 消息转发 - 简书

相关文章

  • Runtime

    相关简单介绍 消息机制消息传递机制消息转发机制-动态添加方法消息转发机制-快速转发消息转发机制-慢速转发消息转发机...

  • <> Chapter 10

    Android的消息机制 Android消息机制概述 Android的消息机制主要是指Handler的运行机制以及...

  • iOS消息转发机制

    消息转发机制: 消息转发机制是相对于消息传递机制而言的。 1、消息(传递)机制 RunTime简称运行时。就是系统...

  • OC消息机制,消息转发机制

    Runtime简称运行时,其中最主要的是消息机制 概述 C 与 OC 的不同 1.C 语言,函数的调用在编译的时候...

  • Runtime 你为何如此之屌?

    一、消息驱动机制 消息驱动机制: 运行的时候的一些机制,最主要的是消息机制。 消息驱动机制-动态调用过程 : 对于...

  • 08.Objective-C 消息机制

    问题 消息机制的三个阶段 1.消息机制发送消息阶段-消息发送2.消息机制动态方法解析阶段 -动态解析3.消息机制消...

  • 关于runtime的一些简单理解

    1.消息发送OC:运行时机制,消息机制是运行时机制最重要的机制消息机制:任何方法调用,本质都是发送消息 SEL:方...

  • runtime系列文章总结

    《iOS Runtime详解(消息机制,类元对象,缓存机制,消息转发)》《消息转发机制与Aspects源码解析》《...

  • 消息机制

    消息机制 主线程创建后Looper.prepare创建lopper对象,创建looper的同时或创建消息队列mes...

  • 消息机制

    阻塞/非阻塞;同步/非同步的概念往往不会分开说,经常会将他们组合到一起,比如:同步阻塞 或 同步非阻塞。 具体解析...

网友评论

      本文标题:消息机制

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