我们开发一个项目都是慢慢完善的,设想一个很坏的情况:你所有的controller都没有基类,都是互相独立的。现在出现一个新的需求,当用户点击导航栏的返回按钮时,需要询问用户是否退出。那么这种情况下我们只能在当前controller自定义一个返回按钮,给它添加点击事件,最后我们在controller增加了几行代码,实现了此功能,如果其它controller也有此需求,我们又如法炮制。往后又有新的需求,需要改变提示框的样式,我们又需要一个个去修改,这样如此往复,代码便极其难维护,且开发效率低下。
所以导航控制器返回事件需要我们统一维护起来,像上篇一样我们可以自定义NavigationController,当push方法被调用时,我们统一设置返回按钮。但我们的项目已经开发的很庞大了,导航控制器我们使用的都是UINavigationController,如果我们此时自定义NavigationController,再去一一替换,也是一件极其耗时的事。此时我们就在想能不能再不影响整体项目的结构下,实现此功能。我们只想在push时去执行我们一段额外的代码片段,去设置返回按钮,此时AOP就派上用场了。
AOP即面向切面编程,这种在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。众所周知,iOS允许我们在runtime时,用自定义的方法替换系统原有的方法
谈一谈拦截导航控制器返回事件(下)——AOP
最新推荐文章于 2020-12-30 02:45:22 发布