iOS Objective-C 中的 Singleton class 和 AppDelegate class 之间的关系

Relation between Singleton class & AppDelegate class in iOS Objective-C

我在 AppDelegate class(.h 文件)中声明了一个变量,其值从多个 ViewController classes.Also 更改为我的 AppDelegate [=25] 的单个应用程序范围实例=] 在我的整个应用程序中共享如下:

AppDelegate *AppD = (AppDelegate *)[[UIApplication sharedApplication] delegate];

由于我可以从任何 ViewController class 访问在 AppDelegate 中声明的这个变量,在这种情况下 AppDelegate class 是 Singleton class 的一个例子吗?

任何人都可以用现实生活中的例子帮助找出单例的用法 class 吗?

app delegate 不应该是各种全局变量的存储库。 app delegate 应该用于影响整个应用程序的事情,比如启动/应用程序终止、进入后台和从后台返回,诸如此类。

如果多个视图控制器共享一个状态,它应该只存在一次,但不会影响整个应用程序,那么您可以考虑为该状态创建一个单例。话又说回来,应该避免全局状态,它只是您编写代码方式的产物。

然而,AppDelegate 是一个单例 class,但您只显示将其用于声明在您的应用程序中全局应用的内容。
例如:如果您想更改导航栏的颜色您的整个应用程序可以使用应用程序委托并设置导航栏的颜色。此外,app delegate 是一个处理应用程序中不同状态转换的对象。
因此,如果你想创建一个可以从多个视图控制器更改的变量,你应该创建一个单例 class 并声明该变量class.

AppDelegate可以像单例一样使用,但我不推荐。就像您可以将所有 类 声明和定义放在 class.h 和 class.m 文件中一样。只需导入 class.h 文件即可调用所有 类。但是阅读、理解和管理起来会很不方便。

AppDelegate主要用于各种app本身的事件,通过UIApplicationDelegate方法。不建议在这里处理太多关于全局数据的逻辑。比如类命名为XXManager、XXService、PublicData,建议管理各种单例数据。