在iOS开发中我们都一般会继承一个父类控制器,那么如果在迁移子类控制器的同时就要将父类控制器也迁移出去。这就造成耦合。
而我们有时候有些耦合是必须的,比如某些需求需要让父类牵一动发全部子类,但是大多时候势必要消除高耦合,做到“低耦合,高内聚”!
此时,可以考虑到一个思想,面向切面思想。
-
面向切面思想
如果把一个项目比作一个正方体,那么把项目结构的首页、账户等就好比是纵向分隔,每个控制器都是自己独自的模块,那么横向的分隔就是控制器共同部分了,比如控制器的生命周期。
最常用的我们友盟统计中需要viewWillAppear,viewWillDisappear实现一样,而如果当初项目比较老,不是统一继承父类控制器,那么我们有一个做法就是利用runtime的swizzleMethod交换方法,具体参考swizzleMethod以及友盟统计
字,此时用到的思想就是面向切面。
面向切面思想也是可以消除耦合的一种思想之一。
这里提及一个面向切面思想的框架Aspects,封装了 Runtime,Method Swizzling 这些技巧。