什么是AppDelegate和我怎么知道什么时候使用它?

我刚刚开始在iPhone应用程序上工作。 我怎么知道什么时候应该把东西放在AppDelegate和自定义的类中? 是否有像Python或PHP这样的使用类似AppDelegate模式的编程语言的规则或任何types的类比?

我通常避免安德鲁使用术语“应用程序的核心”暗示的devise方法。 我的意思是,我认为你应该避免在中央位置包含太多的东西 – 良好的程序devise通常涉及到“关注区域”的function分离。

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

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

  • applicationDidFinishLaunching: – 很好的处理启动configuration和构造
  • applicationWillTerminate: – 最后清理好

您应该避免将其他function放在AppDelegate中,因为它们并不属于此类。 这样的其他function包括:

  • 文档数据 – 您应该有一个文档pipe理单例(对于多个文档应用程序)或一个文档单例(对于单个文档应用程序)
  • button/表/视图控制器,查看委托方法或其他视图处理(在applicationDidFinishLaunching中构build顶层视图除外:) – 此工作应该位于相应的视图控制器类中。

许多人将这些东西包装到他们的AppDelegate中,因为他们很懒,或者他们认为AppDelegate控制着整个程序。 你应该避免集中在你的AppDelegate,因为它混淆了应用程序的关注领域,并没有扩展。

您的应用程序委托是您的应用程序的核心。 这是您的“程序控制器”。

应用程序委托是接收应用程序级消息的类,包括最常用于启动其他视图创build的applicationDidFinishLaunching消息。

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

希望这会有助于更多…

这个新语言的程序员总是有同样的问题 – 程序是从一个主要的方法开始的吗? 是的,在这种情况下你是对的。 IOS应用程序也从一个主要方法开始。
你的主类调用下面的函数:

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

UIApplicationMain启动Cocoa Touch运行循环和创buildUIApplication对象的应用程序基础结构。 我们的应用程序需要内容如此objective-c使用委托来处理这个。 这就是为什么我们称之为AppDelegate(充当UIApplication委托)。 我们实现了这个委托的一些可选的方法,并且相应的行为。

@Shivam,谢谢。

从我所了解的appDelegate来看,接近于Android的ApplicationviewDidLoadviewDidDisappear与Android的生命周期相似。 每个应用程序都有一个生命周期,从启动到来电中断,到通知显示。 如果你需要你的代码在发生这些system事件时做一些特殊的事情,那么你需要编写代码。

在Android中,我们使用onPauseonDestroyonCreate有点callback方法来处理这样的系统事件。