0
点赞
收藏
分享

微信扫一扫

iOS 利用通知给AppDelegate瘦身

原文链接: http://blog.sunnyxx.com/2015/03/09/notification-once/

开发中发现AppDelegate中的代码非常多,主要原因是很多初始化配置的代码都写在了 - application:didFinishLaunchingWithOptions: 中

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // ...
   // 设置rootViewController ...
  // 初始化推送SDK....
  // 初始化 统计SDK
  // 初始化支付SDK
  // 初始化 第三方登录SDK
  // 其它配置.....
  // ...
    return YES;
}

后来,我想到给AppDelegate 增加若干分类,把各种初始化配置的方法写在各个对应的分类中,然后新建一个 总的分类,在总的分类里写一个总的初始化方法,调用这些零散初始化方法,再在AppDelegate.m中impor这个总的分类 调用总的初始化方法.
这个的确是个好办法,但是还是不够优雅,因为AppDelegate.m还需要import 分类文件,造成依赖.
最近看了一篇文章,发现还有更好的办法,那就是: 利用UIApplicationDidFinishLaunchingNotification通知.

// 在各自对应的模块中重写 + load方法,监听UIApplicationDidFinishLaunchingNotification通知
+ (void)load {
    __block id observer =
    [[NSNotificationCenter defaultCenter]
     addObserverForName:UIApplicationDidFinishLaunchingNotification
     object:nil
     queue:nil
     usingBlock:^(NSNotification *note) {
         [self setup]; // Do whatever you want
         [[NSNotificationCenter defaultCenter] removeObserver:observer];
     }];
}
举报

相关推荐

0 条评论