如何将 appDelegate 绑定到应用程序的其余部分?

Posted

技术标签:

【中文标题】如何将 appDelegate 绑定到应用程序的其余部分?【英文标题】:How do I tie up appDelegate to the rest of the app? 【发布时间】:2013-03-19 20:48:48 【问题描述】:

我是 ios 开发的相对初学者,但我设法让我的应用程序做我想做的一切。不过,我有一些关于将应用程序捆绑在一起的问题。

我目前在 appDelegate 中的唯一代码处理远程通知;当我收到远程通知时,我会向用户发送警报、消息等。我还为通知中心生成通知,这会导致不同的方法在不同的视图控制器中运行。

appDelegate 中的所有不同功能怎么样? DidEnterBackground、WillEnterForeground 等?我的应用程序从一个视图 (view1) 开始,该视图创建了一个对象 (stream1),该对象有一个 stopStream 方法。我有按钮来启动和停止流([self.stream1 stopStream])。我的问题是,如何调用这些方法以在其中一个 appDelegate 方法中停止该对象的特定实例?我是否需要在 appDelegate 中为通知中心创建通知,并在视图中处理它的触发?或者有没有更简单的方法?还是我做的事情完全错误,没有按照最佳实践?

任何帮助将不胜感激!还有一个链接到关于应用程序架构的指南,或者链接到你最喜欢的关于在 iOS 中构建应用程序的书的链接会很棒!

【问题讨论】:

【参考方案1】:

如果应用代理确实需要处理这些事件,您的应用代理只需要实现各种应用代理方法。

如果给定的视图控制器或其他类对各种应用程序委托通知(例如进入后台或返回前台等)感兴趣,则视图控制器或其他类应注册相应的通知。有关不同的通知,请参阅UIApplication 的文档。

不要让应用委托方法发布自定义通知。

【讨论】:

所以 appDelegate 会在调用其各种方法时发布通知?有趣的;我会查找文档! 不,我不是这么说的。例如,当应用程序返回前台时,操作系统会做两件独立的事情。 1) 它在应用程序委托上调用applicationWillEnterForeground: 方法(如果已实现)。 2) 它发布UIApplicationWillEnterForegroundNotification。任何注册此通知的课程都会收到通知。 啊好的;这很有帮助。谢谢!【参考方案2】:

您正在寻找的所有方法都可以在here in the docs 中找到。

至于如何处理它们,这完全取决于您的应用。最佳做法是至少正确处理进出后台,以便至少使用这些方法并在您的应用中采取适当的操作。

应用程序像您提到的那样简单地爆出 NSNotifications 是很常见的。它在大多数情况下完全可以接受。

【讨论】:

以上是关于如何将 appDelegate 绑定到应用程序的其余部分?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 appdelegate 传递到视图控制器?

ArrayController 找不到 AppDelegate(Cocoa 中的绑定)

如何将数据库从 AppDelegate 传递到 ViewController

如何将 CoreLocation 值从一个 VIewController 传递到 iOS 中的 AppDelegate?

如何将 AppDelegate 的引用发送到 Viewcontroller 子类?

如何快速添加从我的 appdelegate 类调用的弹出窗口?