个人建议
AppDelegate该文件中只处理app的delegate的事件,不进行其他代码的编写,已达到简洁明晰的作用
瘦身原理
利用+load的特性并结合notification来实现加载其他模块等在app启动时所需要完成的工作
代码(这段代码在AppDelegate里面写)
+ (void)load{
__block id observer = [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidFinishLaunchingNotification object:nil queue:nil usingBlock:^(NSNotification *note) {
//初始化appdelegate的帮助对象
AppDelegateHelper *appDelegateHelper = [AppDelegateHelper new];
[appDelegateHelper appSetUp];
[[NSNotificationCenter defaultCenter] removeObserver:observer];
}];
}
代码说明
- +load会在足够早的时间进行调用
- block会生成一个__nsobserver *给外部remove观察者
- block对observer的捕捉早于函数的返回,如果不加__block,会返回nil
- 在block结束时,只需要清除observer,不需要做其他的清除工作
- 这样在app启动时,所有工作都可以完成,同是也可以保持appdelegate文件的简洁清晰
网友评论