美文网首页程序员
runtime简单粗暴的理解

runtime简单粗暴的理解

作者: 堇之 | 来源:发表于2018-08-06 00:08 被阅读0次

        关于runtime是什么,我这边不做过多解释,百度上一大堆。但是,看看概念,很多人都难以真正理解和使用好runtime。在这里,我从基础使用的观点上,简单粗暴的说下我对runtime的想法。

Class 其实是指向 objc_class 结构体的指针。objc_class 的数据结构如下:

struct objc_class {    Class isa  OBJC_ISA_AVAILABILITY;#if !__OBJC2__    Class super_class                                        OBJC2_UNAVAILABLE;constchar *name                                        OBJC2_UNAVAILABLE;long version                                            OBJC2_UNAVAILABLE;long info                                                OBJC2_UNAVAILABLE;long instance_size                                      OBJC2_UNAVAILABLE;struct objc_ivar_list *ivars                            OBJC2_UNAVAILABLE;struct objc_method_list **methodLists                    OBJC2_UNAVAILABLE;struct objc_cache *cache                                OBJC2_UNAVAILABLE;struct objc_protocol_list *protocols                    OBJC2_UNAVAILABLE;#endif} OBJC2_UNAVAILABLE;

        runtime的强大之处是,它可以访问所有的函数(不管是不是自定义的函数),我把它比喻成一把万能钥匙,而函数就是一间房间,它可以开启任意一间房子。那就有一个很好的优势了,我们可以随时打开一个房间,并知道房间里面有什么东西,甚至拿到房间的任何东西了。那我们可以干嘛?

        1、通过runtime,我们可以知道函数的所有信息,有父类指针、类名、成员变量、方法、缓存以及附属的协议,甚至可以顺着它提供的父类指针访问到其父类的信息。

        2、通过runtime,我们获取到成员变量的时候,通过class_copyIvarList,遍历对象属性,来做事情,比如数据和模型的转换,快速归档等。

        3、通过runtime,我们获取到了方法,就可以实现方法的交换,也可以添加方法。

        当然,还有很多的操作,这边就大概说下比较常用的。一般开发不一定用得上runtime的,但是必要的时候,使用它会省下很多事情。这些需要花更多的时间去琢磨和理解,才能编写出更好的程序。当然,乱使用也会坏事的。

        关于runtime的使用场景,我推荐一个博客,大家可以好好理解下。runtime 运行时机制 + 应用场景

相关文章

  • runtime简单粗暴的理解

    关于runtime是什么,我这边不做过多解释,百度上一大堆。但是,看看概念,很多人都难以真正理解和使用好r...

  • iOS runtime笔记一

    参考资料 南峰子的runtime 一【OC刨根问底】Runtime简单粗暴理解 对象的理解,元类(meta cla...

  • go channel源码分析

    go 源码文件:/runtime/chan.go 你可以简单粗暴的把channel的实现理解为 队列 + 锁 。 ...

  • 【OC刨根问底】-Runtime简单粗暴理解

    从C的面向过程到接触OC的对象、消息的过渡初期总会有知其然不知其所以然的纠结,相关的学习资源一般都是介绍有什么、使...

  • Runtime 简单粗暴详细的解释

    runtime 读到这里有demo哦!!! 觉得有用请多多关注!!!多多喜欢!!! 是OC底层的一套C语言的...

  • 简单理解runtime

    runtime是一套底层的C语言API,包含很多强大实用的C语言数据类型、C语言函数 平时我们编写的代码,底层都是...

  • 简单理解runtime

    runtime简称运行时机制,其中最主要的是消息机制,也是oc的一大特点。 对于c语言而言,在编译的时候就会去决定...

  • runtime的简单理解

    原文链接:http://blog.csdn.net/mumubumaopao/article/details/51...

  • [转载]【OC刨根问底】-Runtime简单粗暴理解

    本文系转载,原文地址,请戳这里 从C的面向过程到接触OC的对象、消息的过渡初期总会有知其然不知其所以然的纠结,相关...

  • objective-C之runtime第一篇

    网上查看了一些runtime的资料, 关于runtime是什么?这里想用自己的理解,简单点说:runtime是一套...

网友评论

    本文标题:runtime简单粗暴的理解

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