FRDModuleManager 提供了一个统一的接口,让各模块知晓应用的生命周期。在 AppDelegate 中留下钩子,在特定的生命周期调用模块的对应方法。这样将使得 AppDelegate 更简单。对于应用生命周期的使用也更清晰。 evernotecid://6F55E44D-BBC1-43F1-9310-4138A0D19764/appyinxiangcom/11652118/ENResource/p18418 git
![]()
其实第2个缺点是能够避免的,咱们能够调整plist文件中的类的顺序,来实现模块的调用顺序。咱们拿FRDModuleManager的demo中的plist文件来验证一下。github
JSDecoupledAppDelegate是由JSBadgeView的做者开发的一款轻量级的AppDelegate解耦工具。它将AppDelegate各个功能点独立出来,并经过代理的方式将控制权下发。实现原理,利用Objective-C的消息转发机制,转发AppDelegate的各个方法来实现AppDelegate的解耦的app
JSDecoupledAppDelegate的缺点很是明显:使用它必须废弃原生的AppDelegate,所以咱们不能经过((AppDelegate *)[UIApplication sharedApplication].delegate).window
来获取window,以及window的rootViewController。工具
不须要添加任何三方库,咱们就能够给AppDelegate
添加不少方法,而且能轻松控制方法的执行顺序3d
添加新的属性比较繁琐,只能经过runtime
或者BlocksKit等三方库实现代理
参考: DelegateDietDemo日志