代码之家  ›  专栏  ›  技术社区  ›  resopollution

AppDelegate用于什么?我如何知道何时使用它?

  •  135
  • resopollution  · 技术社区  · 17 年前

    我刚刚开始开发iPhone应用程序。我怎么知道什么时候应该把东西放进AppDelegate而不是自定义类?是否有规则或任何类型的类比与另一种使用类似AppDelegate模式的编程语言,如Python或PHP?

    4 回复  |  直到 9 年前
        1
  •  264
  •   Matt Gallagher    15 年前

    委托对象是当其所连接的对象达到某些事件或状态时收到通知的对象。在这种情况下,应用程序委托是一个对象,它在UIApplication对象达到某些状态时接收通知。在许多方面,它是一种专门的一对一观察者模式。

    这意味着AppDelegate的“关注区域”正在处理特殊的应用程序状态。其中最重要的是:

    • ApplicationIDFinishLaunching:-适用于启动配置和构建时的处理
    • 应用程序将终止:-适用于最后的清理

    • 文档数据——您应该有一个文档管理器单例(用于多个文档应用程序)或一个文档单例(用于单个文档应用程序)
    • 按钮/表/视图控制器、视图委托方法或其他视图处理(ApplicationIDFinishLaunching:中顶级视图的构造除外)——此工作应在各自的视图控制器类中进行。

    许多人把这些东西都塞进他们的AppDelegate中,因为他们懒惰或者他们认为AppDelegate控制着整个程序。您应该避免将注意力集中在AppDelegate中,因为它会混淆应用程序中的关注区域,并且无法扩展。

        2
  •  28
  •   Andrew Grant    17 年前

    应用程序委托是应用程序的核心。它实际上是你的“程序控制器”。

    Application Delegate是接收应用程序级消息的类,包括最常用于启动其他视图创建的ApplicationIDFinishLaunching消息。

    虽然不完全相似,但您可以将其视为Cocoa程序的“main()”例程。

        3
  •  3
  •   Siddharth    9 年前

    @希瓦姆,谢谢。

    appDelegate ,接近于 Application 是安卓系统。这个 viewDidLoad viewDidDisappear 与Android的生命周期相当。每个应用程序都有一个生命周期,从启动到来电中断,再到出现通知。如果您需要您的代码来执行一些特殊的操作 system 事件发生后,您需要编写方法代码。

    在Android中,我们使用 onPause onDestroy , onCreate 类似于处理此类系统事件的回调方法。

        4
  •  1
  •   Community Mohan Dere    9 年前


    您的主类调用以下函数:

     UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    

    UIApplicationMain启动了Cocoa Touch运行循环和应用程序基础架构,它创建了一个 UIApplication UIC应用程序 )。我们实现该委托的一些可选方法,并相应地进行操作。