iOS-开发菜鸟->大神开发React Native 面试

iOS AppDelegate瘦身

2017-03-29  本文已影响113人  e5311f1a36e5

个人建议

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];
}];
}

代码说明

  1. +load会在足够早的时间进行调用
  1. block会生成一个__nsobserver *给外部remove观察者
  2. block对observer的捕捉早于函数的返回,如果不加__block,会返回nil
  3. 在block结束时,只需要清除observer,不需要做其他的清除工作
  4. 这样在app启动时,所有工作都可以完成,同是也可以保持appdelegate文件的简洁清晰
上一篇 下一篇

猜你喜欢

热点阅读