我应该将 appDelegate 用于所有单例样式的应用程序级代码吗?

Posted

技术标签:

【中文标题】我应该将 appDelegate 用于所有单例样式的应用程序级代码吗?【英文标题】:Should I use the appDelegate for all singleton style, app-level code? 【发布时间】:2012-11-15 14:14:35 【问题描述】:

从“优秀设计”的角度来看。我应该对所有应用程序级公共代码使用 appDelegate 类吗?换句话说,我有很多视图控制器需要做的事情。这意味着它是通用功能,而不是特定于单个视图控制器。所以问题是:我应该把这些常用方法放在 appDelegate 中吗?这是为了这个吗?我应该创建另一个单独的类吗?

以下是我所说的常见功能的几个示例:

1) 播放常见的声音(如错误声音)。

2) 显示警告消息(例如错误消息)。

3) 验证应属于特定类型(十进制-数字)的输入的方法

4) 从网络服务更新应用级数据

【问题讨论】:

【参考方案1】:

将所有常用函数都放到 appDelegate 类中不是一个好主意。

1 & 2) 你可以创建超类,你的所有视图控制器都继承它或使用类别。

3 & 4) 你可以创建一个普通的函数类来实现。例如你的类名是 Function 并且你有类方法,使用它只需简单地调用 [Function validate:yourdata] return boolen value。

【讨论】:

我喜欢!现在,从视图控制器超类继承对我来说似乎很明显,但我特别喜欢随机通用函数的 Function 类思想。我将标记为正确并使用您的想法,除非有人告诉我为什么这是一个糟糕的想法。谢谢。 谢谢。我认为每个软件开发人员都有自己的个人函数类,可以使编程生活更轻松(我有一个,我总是在每个项目中使用它)。随着时间的推移,你的个人函数类会很强大:)所以如果你发现任何你认为可以重用的常用方法,那就把它添加到你自己的个人函数类中吧:) 正如评论:对于 2) Common UIAlertViews...如果您不需要与 UIAlertViewDelegate 交互(每个警报将只有一个确定按钮来关闭警报...及其代表将为零),您可以拥有一个从 NSObject 扩展的类,如 3)中的方法来显示常见的 UIAlertViews。【参考方案2】:

如果它与数据相关,那么在您的应用中拥有一个单独的模型层对我来说最有意义。如果它的代码与您希望视图控制器的行为方式特别相关,那么通用超类甚至UIViewController 类别听起来更像是正确的解决方案。

我认为应用程序委托更多地是关于设置基本应用程序结构(可能包括连接模型和控制器层)并处理其生命周期。

【讨论】:

一些优点。我将核心数据对象用于数据模型层。我应该对对象使用静态方法,以便它们从我的 Web 服务更新自己吗?我什至没有想过视图控制器上的类别或超类,尽管现在看起来很明显。此应用程序中的其中一个有优势吗? 我希望我能标记多个正确的,但你确实得到了支持。谢谢。

以上是关于我应该将 appDelegate 用于所有单例样式的应用程序级代码吗?的主要内容,如果未能解决你的问题,请参考以下文章

我应该为我的视图控制器使用单例吗?

iOS - 从 AppDelegate 监控应用程序流

将 AppDelegate 用作 Singleton 是一种不好的做法吗?

是否应该将 HTML 5 语义标记用于样式?

AppDelegate 应该做多少?

将自定义 UIButton 样式应用于所有按钮