当前位置:   article > 正文

iOS AppDelegate轻量化,组件化_ios组件化各个模块使用appledelegate

ios组件化各个模块使用appledelegate

AppDelegate轻量化Demo

为什么AppDelegate轻量化,组件化?

Appdelegate功能我们有太多的业务需要监听生命周期,比如第三方初始化SDK,文件的管理,推送消息,前后台切花,定位,等等。如果我们把Appdelegate很多职责能够拆分到各个模块中去这样我们的Appdelegate更加维护和管理。

分模块加载AppDelegate方法

基于上述考虑,我们可以采用一种分模块加载的方式加载所有AppDelegate方法,该方式会依次加载各个模块,当主AppDelegate某个方法被调用时,会依次调用各个模块的方法,这样各个模块都存在一套自己的AppDelegate方法,互不干扰,而我们主AppDelegate里面只需要存在相应的调用代码,其余的代码都可以分散在各个工程,从而保持一份稳定且干净的AppDelegate。


第一步:FMDBStartModuleConfig 配置启动的数据
第二步:注册所有的AppDelegate相关的Event Modules

+ (void)load
{
   //注册
    [[FMDBStartApplicationCenter sharedAppEventCenter] registedAllModules];

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

第三步:在主AppDelegate中分别添加调用方法,这里使用了自己维护的module管理器

例如:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
    FMDBStartApplicationCenter *center = [FMDBStartApplicationCenter sharedAppEventCenter];
    [center handleApplicationEvent:@"application:didFinishLaunchingWithOptions:" Complete:^(id  _Nonnull module, SEL  _Nonnull sel) {
        
        IMP imp = [module methodForSelector:sel];
        void (*func)(id, SEL,UIApplication *,NSDictionary *) = (void *)imp;
        func(module,sel,application,launchOptions);
    
    }];
    
    [self p_loadAppRootViewController];
    return YES;
   
}


- (void)applicationWillResignActive:(UIApplication *)application {
 
    FMDBStartApplicationCenter *center = [FMDBStartApplicationCenter sharedAppEventCenter];
    [center handleApplicationEvent:@"applicationDidEnterBackground:" Complete:^(id  _Nonnull module, SEL  _Nonnull sel) {
        
        IMP imp = [module methodForSelector:sel];
        void (*func)(id, SEL,UIApplication *) = (void *)imp;
        func(module,sel,application);
        
    }];
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

第四步:自定义AppDelegate启动module都需要继承该类实现


@implementation FMDBDBModule

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [self p_copyFMDBAppDB];
    [self finished];
    return YES;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/124945
推荐阅读
相关标签
  

闽ICP备14008679号