ios开发新手浅谈强大的runtime机制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios开发新手浅谈强大的runtime机制相关的知识,希望对你有一定的参考价值。
runtime机制,实际上是一套底层的C语言代码,里面提供了很多的C数据类型和一些功能强大的C语言函数。我们所写的OC代码,在底层都是基于runtime来实现的。所以我们可以说OC实际就是披着面向对象外衣的C语言,因为在运行时,OC代码会编译成C/C++ 来运行。
runtime中有很多的C函数,有着很强大的功能,比如 :
1. 能动态类的增删改 成员变量,方法
2.ios Swizzle 能底层动态的交换两个方法(类方法和对象方法)的实现
IOS swizzle的具体做法: 1.在分类的load类方法中利用C函数交换两个方法的实现 2.在分类中实现自定义要替换的方法
runtime常见的函数,头文件:
1.objc/runtime.h 成员变量,类和方法
class_copyIvarList :获取某个类中所有的成员变量
class_copyMethodList:获取某个类的所有方法
class_getInstanceMethod;获取某个具体的对象方法
class_getClassMethod: …..类方法
method_exchangeImplementations:交换两个方法的实现(仅仅找实现,不用导头文件 )
2.objc/message.h 消息机制
objc_msgSend(…..)
方法的调用底层是消息机制:objc_msgSend(对象,@selector(方法名));
我们平常用到的MJExtension框架,能实现多层的字典转模型。其实它底层就是基于runtime来实现的,通过runtime的C函数class_copyIvarList 来获取某个类中所有的成员变量 来遍历对象的成员变量,并取出成员变量的值,然后用递归实现多层的字典转模型 。
如: Ivar *ivars = class_copyIvarList([HMPerson class], &count); //获取到成员变量的个数给count赋值 , 返回成员变量的数组
runtime的强大之处肯定远远不止这些,以后我们在ios开发的过程中会有更多的惊喜和发现。
以上是关于ios开发新手浅谈强大的runtime机制的主要内容,如果未能解决你的问题,请参考以下文章