首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
学习代码
订阅
fan_sny
更多收藏集
微信扫码分享
微信
新浪微博
QQ
8篇文章 · 0订阅
Aspects框架的源码解读及问题解析
前言 在iOS日常开发中,对某些方法进行hook是很常见的操作。最常见的是使用Category在+load中进行方法swizzle,它是针对类的,会改变这个类所有实例的行为。但是有时候我们只想针对单个
用代码理解ObjC中的发送消息和消息转发
当我们向一个对象(实例对象、类对象)发送一条消息时,对象可能是处理不了的,结果就是程序发生crash。 ① NilTest宏,判断对象是否为nil,若为 nil,直接返回 nil。 ③ CacheLookup宏_cache_getImp(Class cls, SEL sel)包…
iOS Aspects源码剖析
本博文基于 v1.4.2 版本源码进行分析。 Aspect是在Runtime的基础上构建的。在学习Aspect前,你需要搞清楚下面的概念: ###1. NSMethodSignature 和 NSInvocation 使用NSMethodSignature 和 NSInvoca…
Aspects源码分析
Aspects一直在项目中使用,主要使用AOP方式进行tracking,但还没好好看一看,最近研究了一下源码,十分推荐大家阅读一下,如果只是一味的看Runtime源码,很难真正的掌握还容易忘,配合着看像Aspects这样优秀的框架有助于形成知识体系,而且代码量也不大,本文只是分…
亮剑: Stinger到底能比Aspects快多少
同时把被Hook类的 -(void)forwardInvocation:(NSInvocation *)invocation方法的函数指针替换为参数对齐的C函数__ASPECTS_ARE_BEING_CALLED__(NSObject *self, SEL selector, …
使用 libffi 实现 AOP
众所周知,使用runtime的提供的接口,我们可以设定原方法的IMP,或交换原方法和目标方法的IMP,以完全代替原方法的实现,或为原实现前后相当于加一段额外的代码。 使用知名的AOP库 Aspects ,可以更便捷地为原方法实现前后增加(代替)额外的执行。 另外,Aspects…
Hook方法的新姿势--Stinger (使用libffi实现AOP )
众所周知,使用runtime的提供的接口,我们可以设定原方法的IMP,或交换原方法和目标方法的IMP,以完全代替原方法的实现,或为原实现前后相当于加一段额外的代码。 使用知名的AOP库 Aspects ,可以更便捷地为原方法实现前后增加(代替)额外的执行。 另外,Aspects…
Stinger--实践实现特定实例对象的AOP
在 iOS完整实践: 使用Libffi实现AOP 一文中,我们介绍了实现AOP的一种方式,通过解析目标方法的签名,使用ffi_prep_cif和ffi_prep_closure_loc构造壳函数替换原函数实现,以感知原方法调用时机及捕获参数,最后通过ffi_call利用预生成的…