iOS:runtime运行时

1.什么是runtime运行时? 框架

runtime运行时是一套比较底层的纯C语言API, 属于1个C语言库, 包含了不少底层的C语言API。 
在咱们平时编写的OC代码中, 程序运行过程当中, 其实最终都是转成了runtime的C语言代码, runtime算是OC的幕后工做者 
函数


好比说,下面一个建立对象的方法中, alloc方法和init方法,最终都是经过运行时发送消息来实现(消息机制)
spa

1 //OC:
2 [[LJPerson alloc] init] ; 3 //runtime : 使用runtime时导入 <objc/runtime.h>便可
4 objc_msgSend(objc_msgSend(“LJPerson” , “alloc”), “init”);

 

2.runtime 有什么用? 
runtime是属于OC的底层, 能够进行一些很是底层的操做(用OC是没法现实的, 很差实现)code

  • 在程序运行过程当中, 动态建立一个类(好比KVO的底层实现)对象

  • 在程序运行过程当中, 动态地为某个类添加属性\方法, 修改属性值\方法\方法的实现blog

  • 遍历一个类的全部成员变量(属性)\全部方法 
    *代码能够参考MJExtention框架get

  • 交换两个方法的实现(主要用来对系统自带的方法作些修改)

3.runtime  中常常用到的函数:it

  • objc_msgSend : 给对象发送消息
  • class_copyMethodList : 遍历某个类全部的方法
  • class_copyIvarList : 遍历某个类全部的成员变量
  • class_getClassMethod :得到某个类的类方法
  • class_getInstanceMethod:得到某个类的对象方法
  • class_getMethodImplementation :得到某个类的某个方法的实现;
  • method_setImplementation :设置某个方法的实现
  • method_exchangeImplementations :交换两个方法的实现

4.应用举例:io

待写。。。。。。class

相关文章
相关标签/搜索