码迷,mamicode.com
首页 > 其他好文 > 详细

RunTime

时间:2016-02-25 13:23:06      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:

一、基本概念

1、runtime简称运行时,就是系统运行时的一些机制,其中最主要的是消息机制。

2、对于C语言,函数的调用在编译的时候已经决定了,编译完成后直接按顺序执行。

3、对于OC函数的调用就是发送消息。属于动态调用,编译的时候并不能决定调用哪个函数,只有在真正运行时才会根据函数名来调用此函数。

二、列子

1.OC代码调用一个方法

 [self.xiaoming answer];

2.在编译时RunTime会将上述代码转化成[发送消息]

objc_msgSend(self.xiaoming,@selector(answer));

三、常见作用

1. 动态的添加对象的成员变量和方法

(1.1)动态添加方法

  class_addMethod([xiaoMing class], @selector(guess), (IMP)guessAnswer, "v@:");

  IMP)guessAnswer 意思是guessAnswer的地址指针;

  "v@:" 意思是,v代表无返回值void,如果是i则代表int;@代表 id sel; : 代表 SEL _cmd;

  “v@:@@” 意思是,两个参数的没有返回值。

2. 动态交换两个方法的实现

  Method m1 = class_getInstanceMethod([xiaoMing class], @selector(firstSay));

    Method m2 = class_getInstanceMethod([xiaoMing class], @selector(secondSay));

    method_exchangeImplementations(m1, m2);

 

3. 实现分类也可以添加属性

4. 实现NSCoding的自动归档和解档

5. 实现字典转模型的自动转换

 

RunTime

标签:

原文地址:http://www.cnblogs.com/xvbobo/p/5216439.html

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