我刚刚开始研究iPhone应用程序.我怎么知道什么时候应该把东西放在AppDelegate而不是自定义类?是否有一种规则或任何类型的类比使用像Python或PHP这样的其他编程语言使用类似AppDelegate的模式?
我通常会避免安德鲁使用术语"应用程序的核心"所暗示的设计方法.我的意思是,我认为你应该避免在中心位置混淆太多东西 - 良好的程序设计通常涉及通过"关注领域"分离功能.
委托对象是一个对象,当它连接的对象到达某些事件或状态时会收到通知.在这种情况下,Application Delegate是一个对象,它在UIApplication对象到达某些状态时接收通知.在许多方面,它是一种专门的一对一观察者模式.
这意味着AppDelegate的"关注区域"正在处理特殊的UIApplication状态.其中最重要的是:
applicationDidFinishLaunching: - 适合处理启动配置和构造
applicationWillTerminate: - 最后清理好
你应该避免在AppDelegate中放置其他功能,因为它们并不真正属于那里.这样的其他功能包括:
文档数据 - 您应该有一个文档管理器单例(用于多个文档应用程序)或文档单例(用于单个文档应用程序)
按钮/表/视图控制器,查看委托方法或其他视图处理(在applicationDidFinishLaunching中构建顶级视图除外) - 此工作应位于各自的视图控制器类中.
许多人将这些东西归咎于他们的AppDelegate,因为他们很懒,或者他们认为AppDelegate控制着整个程序.您应该避免集中在AppDelegate中,因为它会混淆应用程序中关注的区域并且不会扩展.
您的应用程序代表是您的应用程序的核心.它实际上是你的"程序控制器".
Application Delegate是接收应用程序级消息的类,包括最常用于启动其他视图创建的applicationDidFinishLaunching消息.
虽然不完全相似,但您可以将其视为Cocoa程序的"main()"例程.