这就是使用 AOP(Aspect-Oriented-Programming),翻译过来就是「面向切面编程」
通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。
简单来说,就是可以动态的在函数调用的前后插一段代码
- 通过预编译和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术 。
动态在函数调用前后插入一段代码 *
> [UIViewController aspect_hookSelector:@selector(viewWillAppear:)
> withOptions:AspectPositionAfter usingBlock:^(id<AspectInfo>
> aspectInfo, BOOL animated) {
> NSLog(@"View Controller %@ will appear animated: %tu", aspectInfo.instance, animated); } error:NULL];
这样在 UIViewController 的 viewWillAppear: 被调用后,还会再调一下我们定义的 Block,这段日志就会被输出。而打点正好符合这种场景:正事干完之后,额外干一些跟业务无关的事情。