ios - AppDelegate 的用途是什么,我如何知道何时使用它?

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

最佳答案

我通常会避免 Andrew 使用“应用程序的核心”一词所暗示的设计方法。我的意思是,我认为您应该避免将太多东西集中在一个中心位置——良好的程序设计通常涉及按“关注区域”分离功能。

委托(delegate)对象是一个对象,当它所连接的对象达到某些事件或状态时,它会收到通知。在这种情况下,Application Delegate 是一个在 UIApplication 对象达到特定状态时接收通知的对象。在许多方面,它是一种专门的一对一观察者模式。

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

  • applicationDidFinishLaunching: - 适合处理启动配置和构造
  • applicationWillTerminate: - 适合在最后清理

您应该避免将其他功能放在 AppDelegate 中,因为它们并不真正属于那里。此类其他功能包括:

  • 文档数据——您应该有一个文档管理器单例(用于多文档应用程序)或一个文档单例(用于单文档应用程序)
  • 按钮/表格/ View Controller 、 View 委托(delegate)方法或其他 View 处理(除了在 applicationDidFinishLaunching 中构建顶级 View :)——这项工作应该在各自的 View Controller 类中。

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

https://stackoverflow.com/questions/652460/

相关文章:

ios - 自定义 UITableView 标题部分

ios - 在 SwiftUI/Swift/Objective-C/Xamarin 中将底部边框线添

ios - 以编程方式调用电话

objective-c - Objective-C 中是否存在强类型集合?

objective-c - 在objective-c中@符号代表什么?

ios - 使用 AVFoundation AVPlayer 循环播放视频?

objective-c - 在 Objective-C 中大写或更改 NSString 的大小写

objective-c - Objective-C 中可为空、__nullable 和 _Nulla

ios - UIView 周围的虚线边框

iphone - 如何在 Objective-C 2.0 中将方法标记为已弃用?