iOS--runtime / Swizzle
来源:互联网 发布:mediaworld.it 编辑:程序博客网 时间:2024/06/15 02:20
什么是 runtime ?
RunTimec又称运行时。就是系统在运行的时候的一些机制。
是一套底层的 C 语言 API (包含很多强大实用的 C 语言数据类型、 C 语言函数)
平时我们编写的 OC 代码,最终都是转成了底层的 runtime 代码
如:
XqPersion *persion = [XqPersion alloc] init];
[persion run];
在编译时RunTime会将上述代码转化成:
objc_msgSend(persion,@selector(run));
runtim有什么用?
能动态产生,修改,删除一个类、一个成员变量、一个方法.
能够 获得某个类内部的所有成员变量, 方法
Ivar * class_copyIvarList : 获得某个类内部的所有成员变量
Method * class_copyMethodList : 获得某个类内部的所有方法
Method class_getInstanceMethod : 获得某个实例方法(对象方法,减号 - 开头)
Method class_getClassMethod : 获得某个类方法(加号 + 开头)
method_exchangeImplementations : 交换 2 个方法的具体实现
什么是Swizzle?
在Objective-C中调用一个方法,其实是向一个对象发送消息,查找消息的唯一依据是selector的名字。
利用Objective-C的动态特性,可以实现在运行时偷换selector对应的方法实现,达到给方法挂钩的目的。
每个类都有一个方法列表,存放着selector的名字和方法实现的映射关系。IMP有点类似函数指针,指向具体的Method实现。
Swizzle就是在程序运行时交换两个方法的实现
- ios runtime swizzle
- iOS--runtime / Swizzle
- iOS笔记 runtime Method Swizzle 方法交换//
- ios swizzle
- runtime-02-Swizzle
- Runtime编程 - Swizzle Stuff
- Objective-C Runtime 解析(三)—— swizzle method
- IOS使用 swizzle 解决一些错误
- IOS使用 swizzle 解决一些错误
- IOS 页面统计 SWIZZLE 的简单应用
- Method Swizzle黑魔法,修改 ios 系统类库方法
- iOS开发-黑魔法 method swizzle(一)
- [runtime] iOS-Runtime-Headers
- iOS runtime
- iOS Runtime
- iOS-runtime
- iOS Runtime
- IOS Runtime
- 浅谈ThreadLocal(转载)
- Python中时间的处理之——timedelta篇
- CGI CLI 与 模块模式
- jquery日历插件FullCalendar使用技巧
- std::map
- iOS--runtime / Swizzle
- Matlab cat函数
- Java中不同的并发实现的性能比较
- Oracle11gR2_使用GoldenGate配置单向同步
- 内网机器做数据备份机,外网主机直接rsync的实现
- VMWare低版本无法打开高版本创建的虚拟机解决方案
- 让QTreeWidget中单元格的大小自适应内容的长度
- oracle的shutdown与startup
- URI与Path的的分析