iOS:runtime运行时

1.什么是runtime运行时? 

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


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

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是无法现实的, 不好实现)

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

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

  • 遍历一个类的所有成员变量(属性)\所有方法 
    *代码可以参考MJExtention框架

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

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

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

4.应用举例:

待写。。。。。。

转载于:https://www.cnblogs.com/LJson/p/4389805.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值