结构体,访问,偏移量:
// 偏移量,
// C 语言,访问结构体,通过首地址
// 拿到结构体的成员变量,需要偏移量
Aspects 源代码的设计,真是高深莫测:
-
在类里面,自定义转发方法 forward invocation
一般方法交换,是创建, IMP 交换下
Aspects 为了少做事情,利用了方法转发的逻辑
方法调用,自动关联出方法转发 forward invocation,
执行方法转发的方法,就是跑自定义的函数,我们传入的 block
所以之前有一个交换,
对于原本那个类的
forward invocation 的方法,
指向了一个自定义的函数, __ASPECTS_ARE_BEING_CALLED__
例子是,hook
Person 这个类,
里面的 test 方法
- test 的 IMP,
指向了 _objc_msgForward
- 通过 Forward Invocation, 全部 handle 掉了
不需要建立,大量的 IMP
_objc_msgForward
直接触发,消息转发流程