AI
推荐
模板社区
专题
登录
免费注册
首页
思维导图
详情
移动APP性能
2023-05-27 23:39:11
0
举报
分享方式
使用 (¥5)
AI智能生成
移动APP性能
大数据
模版推荐
作者其他创作
大纲/内容
要点
拦截到
调回去
名词约定:原始方法、代理方法
SEL数据类型
IMP数据类型
监控 技术
NSURLProtocol
应用场景
1.自定义请求和响应
2.提供自定义的全局缓存支持
3.重定向网络请求
4.提供HTTP Mocking (方便前期测试)
5.其他一些全局的网络请求修改需求
6.内容过滤
基本步骤
1、定一个NSURLProtocol子类
2、注册这个类
3、NSURLProtocol子类实现
相关方法
canInitWithRequest:
canonicalRequestForRequest
requestIsCacheEquivalent
startLoading
stopLoading
4.实现代理
NSURLConnectionDelegate
NSURLConnectionDataDelegate
5.注销
坑
1.导致递归调用
2.未实现足够的回调
3.崩溃报错
4.httpBody
5.拦截对证书认证影响
优点
拦截UIWebView中的数据
缺点
性能不好
Method swizzling
特点
针对一个类
基本步骤
1、用class_addMethod为某类添加“代理方法”
2、调用method_exchangeImplementations交换IMP
3、确保你的“代理方法”调用了“原始方法”
缺点
死循环
对类簇不起作用
重复执行
改进版本
原理
利用block作为IMP
步骤
1.获取原始IMP,保存到变量
2.定义Block,其中引用原始IMP
3.Block专成IMP
4.直接替换目标方法
Isa swizzling
特点
针对一个对象
原理
修改Isa指针
基本步骤
1、(动态)创建目标类子类
2、(动态)为子类添加方法
3、修改目标对象的isa
object_setClass
场景
KVC
KVO
关于dealloc
Isa swizzling+NSProxy
基本步骤
1、从NSProxy派生一个子类
2、实现那三个方法
methodSignatureForSelector
forwardInvocation
responseToSelector
3、把目标对象的isa指向这个类
Others
fishhook
原理
 符号表的修改
Runlook观察者/CADisplayLink
sendEvent/addTarget:::
疑难
WKWebView
独立进程
TCP数据
用一个入口拦截任意一个方法
不定参数用栈传的
固定参数用寄存器传的
收藏
立即使用
年度总结模板:创造力激发与想象力训练
收藏
立即使用
年度总结模板:学习方法优化与知识吸收效率
收藏
立即使用
年度总结模板:问题解决技巧与创新思维培养
收藏
立即使用
年度总结模板:决策质量评估与选择能力提升
银发书生
职业:本科
去主页
Collect
Get Started
APP性能
Collect
Get Started
移动数据流量统计
Collect
Get Started
渠道选择(移动)
Collect
Get Started
APP
评论
0
条评论
下一页
图形选择
思维导图
主题
补充说明
AI生成
修改AI描述
去编辑
重新生成
提示
关闭后当前内容将不会保存,是否继续?
取消
确定
Document