美文网首页
Runtime相关

Runtime相关

作者: TAsama | 来源:发表于2019-03-24 21:18 被阅读0次

Runtime

  • 数据结构
  • 类对象与元类对象
  • 消息传递
  • 方法缓存
  • 消息转发
  • Method-Swizzling
  • 动态添加方法
  • 动态方法解析
isa指针

在32为或64位架构下,isa指针分为指针形isa和非指针形isa
指针型isa的值代表Class的地址
非指针型isa的值的部分代表Class的地址

isa指针的指向
  • 关于对象,其指向类对象
  • 关于类对象,其只想元类对象
  • 元类对象的isa指针都指向根元类对象,而根元类对象对象的isa指针指向根类对象。
method_t

method_t结构体封装了函数四要素,即:

  • 名称
  • 返回值
  • 参数
  • 函数体

其中名称通过SEL方法选择器表示,返回值和参数则由“Type Encodings”类型的字符串表示,函数体则指代了IMP函数指针。


对象的数据结构

对象、类对象、元类对象

  • 类对象存储实例方法列表等信息
  • 元类对象存储类方法列表等信息

关于类对象的isa指针指向可以用下图表示:


isa指向表

消息传递机制

可以用下图展示消息传递的流程:


消息传递

注意:在消息缓存中查找是通过哈希表来快速定位函数指针,而在当前类方法列表中查找时,对于已经排序好的列表使用二分查找,而对于没有排序的列表采用一般遍历查找发。

消息转发流程
消息转发流程.jpg

我们可以在

ressolvelinstanceMethod方法中为对象动态添加方法,已达到处理消息未被实现的问题。

相关文章

  • iOS之RunTime探索与实践

    Runtime 概念 Runtime 相关概念 Runtime 实践 Runtime概念 Runtime简称运行时...

  • IOS面试考察(一):runtime相关问题

    @[TOC] 1. IOS面试考察(一):runtime相关问题 1.1 runtime相关问题 runtime是...

  • runtime02-常用API

    runtime常用API runtime API01-类相关 runtime API01-类相关-事例01 run...

  • Runtime学习笔记记录

    文章目录 一 runtime原理 二 Runtime相关的头文件2-1 iOS 中 Runtime相关的头...

  • iOS - Runtime - 概念和方法交换

    runtime的概述runtime的相关概念runtime消息机制消息传递动态方法解析消息转发runtime的作用...

  • Runtime相关

    cache_t ·用于快速查找方法执行函数 ·是可增量扩展的哈希表结构 ·是局部性原理的最佳应用

  • Runtime相关

    1. 当接手一个比较大的项目时,利用method Swizzle (方法交换),来快速熟悉项目,从控制台输出当前控...

  • runtime相关

    修改系统方法 动态添加方法 动态给系统类添加属性(给分类添加属性) runtime+kvc 转换模型

  • runtime 相关

    http://blog.csdn.net/wzzvictory/article/details/8624057ru...

  • Runtime相关

    Runtime 数据结构 类对象与元类对象 消息传递 方法缓存 消息转发 Method-Swizzling 动态添...

网友评论

      本文标题:Runtime相关

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