runtime运行机制

时间:2015-05-09 11:50:22   收藏:0   阅读:187

runtime是实现机制是什么?一般用于干什么?下面笔者就分享给大家了,有什么不足之处,希望大家指点建议。


runtime 是一套比较底层的纯C语言的API,属于一个C语言库,包含了很多底层C语言的API。

在我们平常写的oc代码中,程序运行的过程中,最终转变成runtime的C语言代码,runtime是OC的幕后工作者,


比如说:下面一个创建对象的方法中

OC:

person =  [Person alloc] init];


runtime:

objc_msgSend(objc_msgsend("Person","alloc"),"init")


它是用来干上面的呢?

1.在程序运行的过程中,动态创建一个类(比如说KVO的底层实现)

2.在程序运行的过程中,动态的为某一个类添加属性/方法,修改属性值/方法

3.遍历一个类的所有成员变量(属性)/所有的方法:列如:我们需要对一个类的属性进行归档解档的时候,属性特别的多,这时候,我们就会写很多对应的代码,但是如果使用了

runtime就可以动态的设置了,

例如:Person.h的文件如下所示

@property (nonatomic,assign)int age;

@property (nonatomic,assign)int height;

@property (nonatomic,copy)NSString *name;

@property (nonatomic,assign)int age2;
@property (nonatomic,assign)int heigh2t;

@property (nonatomic,assign)int age3;

@property (nonatomic,assign)int heigh3t;

@property (nonatomic,assign)int age4;

@property (nonatomic,assign)int heigh4;

Person.m实现文件的内容如下




学习,runtime机制首先要了解下面几个问题


1.头文件,利用头文件我们可以查看到runtime中的各个方法!


2.相关应用

(1)NSCoding(归档和解档,利用runtime遍历模型对象的所有属性)

(2)字典->模型(利用runtime遍历模型对象的所有属性,根据属性名从字典中取出对应的值,设置到模型的属性上)

(3)KVO(利用runtime动态产生一个类)

(4)用于封装框架(想怎么改就怎么改)

这就是runtime机制的主要运行方向

3.相关的函数

(1)objc_msgSend:给对象发送消息

(2)class_copyMethodList:遍历某个类所有的方法

(3)class_copyIvarList:遍历某个类所有的成员变量

这是我们学习runtime必须知道的函数


4.必备常识

(1)Ivar:成员变量

(2)Method:成员方法

从上面例子中我们看到我们定义的成员变量,如果要是动态创建方法,可以使用Method,也许,看到这里,你是否对runtime有了更深入的了解?





原文:http://blog.csdn.net/jianglonghuang/article/details/45599047

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!