美文网首页
自己对Appdelegate的一些理解

自己对Appdelegate的一些理解

作者: 褪而未变 | 来源:发表于2017-09-23 10:29 被阅读0次
  • 以前写过一篇关于Appdelegate的文章,当时对其他的很多功能和使用技巧还是不是很清楚,只做了一些简短的介绍,之后自己做了一些测试,也查阅了很多大神的博客和资料,下面就谈一谈我的一些基本理解:

1.AppDelegate基本认识

要说AppDelegate就得从程序启动开始,由以下代码可以看出,AppDelegate就是一个App的代表,所有基于App层级的操作都需要在其内完成

// UIApplicationMain主要负责了:从给定的类名初始化应用程序对象、从给定的应用程序委托类,初始化一个应用程序委托、启动主事件循环,并开始接收事件
// 第三个参数 principalClassName -- UIApplication 或 UIApplication 子类,nil 默认为 UIApplication
// 第四个参数 delegateClassName -- AppDelagate 类名
int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}

2.AppDelegate的基本应用环境

苹果的官方文档都建议应该由AppDelegate来处理这些工作:

  • 1.app的启动代码;
  • 2.响应app的状态,比如app切换到后台和前台等状态;
  • 3.响应外部传递给app的通知,比如说push,low-memory warnings;
  • 4.决定了app的状态是否应该保存或者恢复;
  • 5.响应不是发送给特定view或者vc,而是发送给app本身的事件;
  • 6.用来保存一些不属于特定vc的数据。

虽然官方家建议将上述操作放在AppDelegate来处理,但是一个业务逻辑稍复杂点的项目,上述6点的所有功能的代码直接一股脑塞到一个文件里,能不臃肿才怪了,所以就有了第三点.

3.针对臃肿的AppDelegate我们需要采取的措施与方法

  • 1.在AppDelegate的分类中实现相关逻辑(可根据功能或控制器进行分类实现).


    10001-8C24-30A8415130EE.png
  • 2.使用协议,协议里面声明的就是类似UIApplicationDelegate代理方法。业务组件里面添加一个遵循这个协议的对象,实现你想在AppDelegate里面实现的对应方法。
  • 3.使用单例类,添加全局变量NSMutableArray用于存放各业务组件里面的问题2中的对象,在主工程AppDelegate的代理方法里面遍历数组调用各业务组件里面问题1对象的协议方法,当然,这个遍历数组、调用方法的实现应该放在单例类里面实现。

实现思路是这样的,具体实现给大家提供一个示例:


image.png

image.png

DMUserCenterModule:用户中心模块上面提到的对象。DMApplicationDelegate:上面提到的协议。DMAppDelegateManager:单例类。
DMUserCenterModule维护在各个业务组件里面;DMApplicationDelegate、DMAppDelegateManager 一般维护在与业务不太相关的弱组件库里面。

相关文章

  • 自己对Appdelegate的一些理解

    以前写过一篇关于Appdelegate的文章,当时对其他的很多功能和使用技巧还是不是很清楚,只做了一些简短的介绍,...

  • iOS APP的AppDelegate理解

    创建应用程序之后之后,默认有AppDelegate.h文件与AppDelegate.m文件。 AppDelega...

  • AppDelegate的一些方法

    APP delegate的方法 1.程序启动时,需要执行的委托方法 - (BOOL)application:(UI...

  • 规范

    一、工程结构说明,参考了吴星的和网上的一些实践: AppDelegate, 包括 AppDelegate.h, A...

  • AppDelegate 的详解

    AppDelegate 的详解 iOS 中的 AppDelegate.m/h 文件是很重要的,因为它是对 Appl...

  • 微点滴:对于OC的runtime运行时的一些理解

    runtime 的一些理解, 整理收集了不少网络的知识, 只是用于自己对runtime的理解,以备以后自己查阅...

  • iOS常用宏定义(二)

    //AppDelegate #define APPDELEGATE [(AppDelegate*)[UIAppli...

  • 对递归的一些理解

    当一个函数的运行期间调用另一个函数的时候,在运行被调用的函数之前,系统会怎样操作呢: 1. 将所有的实参,以及接下...

  • 对一些歌词的理解

    关于感情的歌词最喜欢陈楚生 尤其是《经过》和《天长地久》。 若我爱你的方式已不同开始,不如我们变换下位置,看一看原...

  • 对NSCache的一些理解...

    对于NSCache的一些理解 对于有一定开发经验的iOS攻城狮来说,我们在对一个APP数据做存储和内存优化的时候,...

网友评论

      本文标题:自己对Appdelegate的一些理解

      本文链接:https://www.haomeiwen.com/subject/mqfcextx.html