aop是一种思想,具体的用途是在不进行大的改动的前提下,切开现有的代码模块,在里面塞进去一小段代码,缝上伤口,实现自己的想法。
iOS中增加一个新的方法,可以继承一个父类,子类中增加方法,也可以增加一个分类,在分类中实现新的方法,这样子,代码量会比较多,整体结构会复杂度增加,AOP可以在分类中建立自己的方法,重写类的load方法,在里面进行方法切换,这样,在外界进行老方法的调用时,实际上调用的是自己的方法,实现整体的简洁性。
在《分类和扩展的区别》 提到过,分类的方法优先级高于主类
@implementation UIViewController (addition)
+(void)load{
[super load];
Method originalMethod = class_getInstanceMethod([self class], @selector(system_method));
Method newMethod = class_getInstanceMethod([self class], @selector(new_method));
method_exchangeImplementations(originalMethod, newMethod);
}
网友评论