美文网首页
iOS中runtime机制

iOS中runtime机制

作者: 落魄的iOS程序员 | 来源:发表于2021-03-30 17:55 被阅读0次

        runtime也叫动态运行时,OC是一门动态语言,他会将一些工作放在代码运行时处理而不是编译时,也就是说,很多类和变量在编译时的类型我们是不知道的,因此它需要一个编译器和运行时系统来动态创建类、对象进行消息传递(也就是方法调用)。

        在OC中对象调用方法是[object method]的形式,对象在调用该方法时编译器会将该方法调用转换成消息发送objc_msgSend(object,method),而在runtime执行过程是通过object的指针找到他的类,在类里面的方法集合里面找到method方法,如果没找到就到他的父类里面找,如此一致找下去,一旦找到就去执行;

        在runtime的使用

1、SEL(selector)方法选择器;

2、id类型,他是指向某个实例的指针,指向什么类型就是什么类型;

3、Class(类)他是一个结构体指针,我么可以动态添加成员方法,里面有objc_ivar_list存储成员变量列表和objc_ivar存储单个成员变量,为了处理类和对象的关系,runtime库创建了一个叫Meta Class的元类,类对象所属的类叫做元类,Meta Class表述了类对象所具备的元数据;

4、Method类中方法类型;

5、Property,可以获取类运行时的属性;

6、Cache,从runtime执行过程我们可以看出如果每次调用方法都这样查找,特别是同样的方法多次调用的情况下,每次都要去查找类,父类以及遍历方法集合找到调用的方法,效率必然会很低。objc_cache缓存就是将我们调用的方法第一次查找到之后缓存起来,以键值对的方式存起来,method_name作为key,方法访问的之后优先从缓存中读取,我们也知道字典中以key查询效率是最高的,这样大大提高了查询效率。

相关文章

  • iOS中的Runtime学习小记

    本博客主要分以下几个方面来介绍iOS中的runtime Runtime的概念介绍 iOS中的消息机制 Runtim...

  • Objective-C Runtime中的并发内存释放

    Mac和iOS代码中的核心是Objective runtime机制,而runtime的核心是objc_msgSen...

  • ios runtime的使用

    ios 开发中的runtime 的简单理解 1.runtime也就是ios开发中的运行时机制,是一套比较底层的C语...

  • Runtime(运行时) 入门

    1.什么是Runtime? runtime是iOS 的一种运行时机制. 是iOS ...

  • iOS中runtime机制

    什么是runtime? runtime就是运行时,因为Objective-C是一门动态语言,它将很多静态语言在编译...

  • iOS中runtime机制

    runtime也叫动态运行时,OC是一门动态语言,他会将一些工作放在代码运行时处理而不是编译时,也就是说,...

  • iOS面试基础知识 (一)

    作者:akon 原文地址: 一、Runtime原理 Runtime是iOS核心运行机制之一,iOS App加载库、...

  • iOS RunTime 详解

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

  • Runtime 一个必须会的技能

    Runtime 一个必须会的技能 前言: Runtime是iOS的一个运行时机制,在iOS的开发中很多时候会使用到...

  • 面试技巧攻克-OC高级特性

    作者:iOS大蝠 一、runtime机制 1、什么是runtime? runtime是OC的重要特性,使得OC语言...

网友评论

      本文标题:iOS中runtime机制

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