在项目中多模块的初始化工作大都写在的 AppDelegate.m 下的 - application: didFinishLaunchingWithOptions: 方法中去执行,这种做法使得该方法中代码过长、阅读性很差,这么做其实只是为了在程序启动时获得一次调用机会。我们可以采取下面的方法来减轻 AppDelegate.m 的压力:
+ (void)load {
/** 注册监听一个通知 */
__block id observer =
[[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidFinishLaunchingNotification object:nil queue:nil usingBlock:^(NSNotification * _Nonnull note) {
/**
* 这里可以写你要初始化去做的东西
*/
/** 完成操作后销毁通知的监听 */
[[NSNotificationCenter defaultCenter] removeObserver:observer];
}];
}
额外说明一下 + load 和 + initialize 方法的区别:
+ load 方法会在加载类的时候就被调用,也就是 iOS 应用启动的时候,就会加载所有的类,就会调用每个类的 + load 方法。
+ initialize 方法会在第一次初始化这个类之前被调用。
具体可以参见这两篇文章深入了解:
http://www.jianshu.com/p/9368ce9bb8f9
http://blog.csdn.net/zww1984774346/article/details/51211737