iOS hook原理
2024-08-31 00:50:06
OC中的method其实是一个结构体
struct objc_method{
SEL method_name
char *method_types
IMP method_imp
}
SEL是方法名,IMP其实就是一个C函数的指针,可以直接强制转换的,runtime中的IMP可以直接操作这些函数
方法调用流程:Objective-C 消息转发都会转发为objc_msgSend(receiver,@selector(message))
iOS 设备流畅基于runtime和runloop,高效的消息转发机制
寻找IMP的过程():在当前class方法缓存(cache methodLists)里寻找,再去当前类的方法列表(methodLists)里查找,找到后
添加到缓存列表里,没有继续往下执行,再去父类的缓存列表和方法列表里查找,直到找到基类为止
消息转发过程:
1.+(BOOL)resolveInstanceMethod:(SEL)sel和+(BOOL)resolveClassMethod:(SEL)sel;
2.-(id)forwardingTargetForSelector:(SEL)sel
3.-(void)forwardInvocation:(NSInvocation *)anInvocation
若3次拯救机会返回NO,就会抛出异常或者崩溃
最新文章
- 比较评测epoll,select,and poll 时间机制
- Xenko基础API笔记2-Enum Keys按键
- Another app is currently holding the yum lock; waiting for it to exit...
- linux命令细究
- linux 中的快捷键
- 录制游戏视频——fraps
- Qt5.0.2无法发布问题
- Android Studio使用技巧
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象
- object-c 内存管理机制的学习
- 为什么C++中声明和定义要分开写
- Progressive Web Apps入门
- Apache万网SSl证书安装不成功的一个注意事项(https安全链接,基于phpstudy)
- js学习(六)- js对象创建
- 在html中控制自动换行
- .NET实现事务的编码方式
- NYOJ 最大和
- SSM集成Easyui框架及多模块开发的认识
- 排序算法之直接插入排序Java实现
- bzoj1814: Ural 1519 Formula 1 动态规划 插头dp