美文网首页
RunTime一些相关知识

RunTime一些相关知识

作者: River_YYH | 来源:发表于2021-02-02 15:30 被阅读0次
image.png

一、RunTime的基本数据结构

基本数据结构包括:objc_object、objc_class、isa指针、method_t

1、Objc_object

image.png

2、objc_class

image.png

3、isa指针

image.png

a、isa是什么含义?isa包含了指针型isa和非指针型isa。


image.png

3、method_t

a、cache_t
image.png
image.png image.png

runtime的基础数据结构


image.png

4、对象、类对象、元类对象

a、类对象是存储实例方法列表等信息的数据结构。
b、元类对象存储类方法列表信息的数据结构。
类对象、元类对象都是objct_class类型数据结构
实例通过isa找到相应类对象,类对象通过isa可以找到相应的元类对象同时可以访问相应的类方法;元类对象通过isa可以找到根元类对象(包括根元类对象isa也是指向根元类对象)


image.png
当我们调用类方法没有对应的实现,但是有同名的实例方法时候,这个时候会不会发生崩溃?会不会发生实际调用?
由于根元类对象superClass指针指向了根类对象,当在根元类方法中查找没有找到相应的方法,它会通过supclass指针到类对象中去找,如果有相应的方法就会调用。

image.png

打印结果都是:phone


image.png

5、缓存查找

a、缓存查找的具体流程和步骤?
缓存查找是采用哈希查找


image.png
image.png

6、消息转发

image.png
image.png

7、RunTime实战问题

a、obj foo和obj_mesgSend()函数之间有什么关系?

在消息传递过程中在编译器编译之后就会变成了obj_mesgSend()函数的第一个参数是obj,第二参数就foo的函数选择器。经过编译之后【obj foo】就会变成了obj_mesgSend()函数调用对应的参数了。

b、runtime是如何通过Selector找到对应的IMP地址的?

首先查找当前实例所对应类对象的缓存是否有selector所对应缓存IMP实现,若缓存有就把缓存IMP返回给对应调用方,若缓存没有就根据当前类的方法列表去查找这个Selector的具体IMp实现,当前类如果没有就通过当前类superclass指针逐级查找父类的方法列表来查找这个Selector所对应的IMp的实现。

c、能否向编译后的类中增加实例变量?

 编译后类是不能添加实例变量的。

d、能否向动态的类中增加实例变量?

可以的。

相关文章

  • RunTime一些相关知识

    一、RunTime的基本数据结构 1、Objc_object 2、objc_class 3、isa指针 a、isa...

  • ART Runtime创建(三)--Heap的创建

    Heap的创建位于/art/runtime/runtime.cc的Runtime::Init方法中 一. 相关知识...

  • Runtime基础知识

    Runtime相关的知识主要从以下几个问题入手吧 Runtime是何物 Runtime中的结构体 Runtime中...

  • iOS知识点整理

    iOS知识点整理 持续更新中。。。 runtime相关 iOS 模块详解—「Runtime面试、工作」看我就 ? ...

  • Runtime的相关知识

    Runtime是近年来面试遇到的一个高频方向,也是我们平时开发中或多或少接触的一个领域,那么什么是runtime呢...

  • Runtime常用的几个应用场景

    概述 接上篇《Runtime基本原理及Demo》,了解了Runtime相关基础知识后,我们谈一下Runtime常见...

  • Runtime常用的几个应用场景

    概述 接上篇《Runtime基本原理及Demo》,了解了Runtime相关基础知识后,我们谈一下Runtime常见...

  • iOS面试相关

    GCD 系列知识总结 NSOperation相关知识总结 iOS Runtime详解 黑魔法 Method_Swi...

  • iOS RunTime 详解

    本文讲述 iOS Runtime 相关的知识点,从下面几个方面探寻 iOS Runtime的实现机制。 Runti...

  • Runtime源码浅析(内部分享)

    前段时间,公司内部开发小组进行了一场Runtime分享交流会,我也重新拾遗了一些与Runtime相关的知识,现分享...

网友评论

      本文标题:RunTime一些相关知识

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