runtime-01
2015-07-22 22:24
211 查看
Runtime实现的机制:
运行时机制它是一套C语言库;实际上我们编写的所有OC代码,最终都是转成了runtime库的东西,比如类转成了runtime库里的结构体等数据类型,方法转成了runtime库里面的C语言函数,平时调方法都是转成了objc_msgSend函数(所以说OC有个消息发送机制);因此,可以说runtime是OC的底层实现,是OC的幕后执行者;
举例:
runtime库里面包含了跟类、成员变量、方法相关的API
1,在程序运行过程中,动态创建一个类(比如KVO的底层实现);
2,在程序运行过程中,动态地为某个类添加属性、方法,修改属性值、方法;
3,遍历一个类的所有成员变量(属性)、所有方法
例如:我们需要对一个类的属性进行归档解档的时候属性特别的多,这时候,我们就会写很多对应的代码,但是如果使用了runtime就可以动态设置。
Runtime机制需要了解的:
常见的头文件、函数
#import<objc/runtime.h> :成员变量、类、方法
1,Ivar *class_copyIvarList : 获得某个类内部的所有成员变量
2,Method *class_copyMethodList : 获得某个类内部的所有方法
3,Method class_getInstanceMethod : 获得某个实例方法(对象方法,减号-开头)
4,Method class_getClassMethod : 获得某个类方法(加号+开头)
5,method_exchangeImplementations : 交换2个方法的具体实现
#import <objc/message.h> : 消息机制
1,objc_msgSend(....)
运行时机制它是一套C语言库;实际上我们编写的所有OC代码,最终都是转成了runtime库的东西,比如类转成了runtime库里的结构体等数据类型,方法转成了runtime库里面的C语言函数,平时调方法都是转成了objc_msgSend函数(所以说OC有个消息发送机制);因此,可以说runtime是OC的底层实现,是OC的幕后执行者;
举例:
runtime库里面包含了跟类、成员变量、方法相关的API
1,在程序运行过程中,动态创建一个类(比如KVO的底层实现);
2,在程序运行过程中,动态地为某个类添加属性、方法,修改属性值、方法;
3,遍历一个类的所有成员变量(属性)、所有方法
例如:我们需要对一个类的属性进行归档解档的时候属性特别的多,这时候,我们就会写很多对应的代码,但是如果使用了runtime就可以动态设置。
Runtime机制需要了解的:
常见的头文件、函数
#import<objc/runtime.h> :成员变量、类、方法
1,Ivar *class_copyIvarList : 获得某个类内部的所有成员变量
2,Method *class_copyMethodList : 获得某个类内部的所有方法
3,Method class_getInstanceMethod : 获得某个实例方法(对象方法,减号-开头)
4,Method class_getClassMethod : 获得某个类方法(加号+开头)
5,method_exchangeImplementations : 交换2个方法的具体实现
#import <objc/message.h> : 消息机制
1,objc_msgSend(....)
相关文章推荐
- (转)Android面试题
- 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <五> NSDicionary + NSMutableDictionary
- MySQL - Incorrect string value: for column 'name' at row 1
- c.p.p第四章编程训练
- 事件和路由事件概述
- 内存分配、释放以及内存分配系统调用
- ffmpeg常用命令
- 黑马程序员------C语言基础 字符串
- java基础之数组
- 文章标题
- 二零一五年七月二十二 工作总结
- Lua的文件操作
- dojo.create\dojo.place\dojo.empty\dojo.destroy\dojo.body
- 【BZOJ】1213 高精度开根
- 中文输入输出
- java创建匿名线程
- leetcode笔记:3Sum Closest
- socket协议下如何缓存图片--推荐EGOCache
- wxhl ios bj 49 张浩 学习心得连载 第二章
- 【Python 学习手册笔记】赋值、表达式和打印