其他类中的 UIApplicationDelegate 函数

Posted

技术标签:

【中文标题】其他类中的 UIApplicationDelegate 函数【英文标题】:UIApplicationDelegate Functions in Other Classes 【发布时间】:2012-03-27 00:37:32 【问题描述】:

是否有可能符合UIApplicationDelegate 并成功地在任何类中调用启动/关闭时调用的所有函数?例如,如果我有一个类,在应用程序关闭时保存大量数据是个好主意,但我不想在 App Delegate 中创建对它的引用,是否可以它符合UIApplicationDelegate协议,然后执行它保存在(void)applicationWillResignActive:(UIApplication *)application

更简洁地说:让多个类符合UIApplicationDelegate 有什么危险吗?

【问题讨论】:

【参考方案1】:

在任何时候只能为任何对象指定一个委托。听起来您在这里真正想做的是注册通知。

或者,如果您想要的事情没有通知,请将您的应用程序委托设置为在某些应用程序委托事情被触发时将自定义通知发布到您想要工作的所有各种类中的任何侦听器。

为了回答您的简洁问题,让多个类符合UIApplicationDelegate 不应该有“危险”,但同样,您在任何时候都只能有一个代表回答UIApplication

【讨论】:

但是查看文档,他们从来没有警告过多个符合UIApplicationDelegate的类。 @CodaFi,您可以让其他类符合 UIApplicationDelegate,但是您如何将多个委托分配给您的 UIApplication 对象? [UIApplication sharedApplication].delegate 看起来很有希望。 @CodaFi 你不能在一个变量中保存两个值。【参考方案2】:

无需将委托设置为您的班级,也不可能有两个委托.. 您可以做的是注册通知。

UIApplicationDidBecomeActiveNotification
UIApplicationDidChangeStatusBarFrameNotification
UIApplicationDidChangeStatusBarOrientationNotification
UIApplicationDidEnterBackgroundNotification
UIApplicationDidFinishLaunchingNotification

等等等等。在UIApplication类参考中检查Notifications的文档

【讨论】:

我不认为我很清楚......我只是想知道它是否可能,而不是解决方法。有关更多信息,请参阅我与 Michael Dautermann 的讨论。 @CodaFi 这不是解决办法。一次只能有一个委托来获取这些方法调用。所以一件事是您将此委托设置为您的类可能在您的视图中确实加载了或者您在哪里创建了您的类的对象并在您的类中获取所有方法调用而不是在 AppDelegate 类中。而且在我看来应该没有问题。但我建议通知而不是设置委托。现在决定权在您手中。

以上是关于其他类中的 UIApplicationDelegate 函数的主要内容,如果未能解决你的问题,请参考以下文章

其他类中的 UIApplicationDelegate 函数

如何访问其他类中的属性/方法

c++ - 如何使用构造函数中的'this'初始化其他类中的引用

为啥派生类中的重写函数会隐藏基类的其他重载?

为啥派生类中的重写函数会隐藏基类的其他重载?

为啥派生类中的重写函数会隐藏基类的其他重载?