博客> iOS 面向切面编程 使用(XAspect)
iOS 面向切面编程 使用(XAspect)
2018-10-21 03:52 评论:0 阅读:1307 lvhahaha
面向切面编程 XAspect

在学习面向切面编程的时候(Aspect),看到了一个简单的库的使用,XAspect,还有这个不是好几千star的Aspect。XAspect比着Aspect有一些局限性,只是切面使用,但是也是可以使用的同好的一个库。

对于面向切面编程,就是在不需要更改之前的代码逻辑,就能加入新的功能。主要用来处理一些具有横切性质的系统性服务,如日志记录、权限管理、缓存、对象池管理等。

首先git地址:https://github.com/xareelee/XAspect

它提供了宏和api来将你的方面实现绑定到objective不管你是否有源实现,甚至是苹果的SDK!

XAspect将方面逻辑(或横切关注点)从您的项目中分离出来,并将这些方面封装到分离的方面文件中。一旦程序被加载,XAspect将通过方法自动地将这些补丁合并到您的程序中。

使用XAspect有点像为源代码编写补丁或插件。使用几行来创建一个方面上下文,您可以开始编写您的补丁实现。当程序完成加载时,XAspect会自动将这些补丁合并到您的程序中。 例如,假设您想在每次初始化对象时记录一个消息,您需要观察-NSObject init的调用。使用XAspect,您可以很容易地将NSLog()语句添加到-NSObject init。

 屏幕快照 2017-12-25 下午3.32.08.png

当然可以使用在自定义的类中,ViewController,Manager。可以拦截方法,注入某一模块的代码。

例如可以抽离AppDelegate的代码: @synthesizeNucleusPatch(Default, -, BOOL, application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions); 可以在这里实现使用的第三方SDK的创建,使代码模块化,更易读。

例如代码使用友盟SDK的init 首先创建.m文件。XAspect-UmengShareAppDelegate.m

 屏幕快照 2017-12-25 下午3.37.00.png

 屏幕快照 2017-12-25 下午3.37.43.png

XAspects 使用说明: // 必须要有的宏定义, 而且必须写在最前面 // AtAspect字段固定, 不能修改 // LZProjectName 这个可以自定义, 一般和自己需要注入代码的类有关 // #define AtAspect LZProjectName

// 需要注入代码的类 // AtAspectOfClass 固定字段, 不能修改 // AppDelegate 需要注入代码的类 // #define AtAspectOfClass AppDelegate // 开辟空间, 这个参数类名需和上面的类一致 @classPatchField(AppDelegate)

结尾 // #undef AtAspectOfClass // #undef AtAspect

XAspect讲解就到这里了,使用时候很简单实用,下篇讲解Aspect。在使用过程中有什么问题,可以私信我交流学习。

收藏
4
sina weixin mail 回到顶部