Aspects是一个非常知名的用于 AOP 的 Objective-C 库,可以对类方法或者实例方法进行 Hook,虽然它的作者不推荐在生产环境下使用这个组件,但是了解 Aspects 的原理,对于我们更好地掌握 Objective-C 这门语言还是很有好处的,因此本文就来简要地分析下 Aspects 的实现细节。
NSObject 分类
这个库里的代码不多,只有 Aspects.h
和 Aspects.m
两个文件。头文件里定义了一个 NSObject 的分类,给所有 NSObject 的子类添加了两个方法,分别用于对类方法和对类实例方法进行 Hook: