码迷,mamicode.com
首页 > 移动开发 > 详细

ios开发新手浅谈强大的runtime机制

时间:2016-02-20 18:48:40      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

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机制

标签:

原文地址:http://www.cnblogs.com/coderMrZhou/p/firstBlog.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!