0

我有一个类(从 NSNotificationCenter 获取数据,处理它并再次将其发送到 NSNotificationCenter),我喜欢在我的应用程序启动后立即创建一个实例。我可以从视图控制器中做到这一点,但这似乎很尴尬,因为它们不相关。那么,您认为在哪里适合创建与 UI 不直接相关但应持续应用程序生命周期的对象?

4

4 回答 4

2

将代码塞入 App Delegate 是一件很诱人的事情,但要抵制这种冲动。理想情况下,应用程序委托应尽可能远离正常的应用程序执行。它是全局实例的唯一原因是它可以充当应用程序和系统之间的委托。为了保持权力分离,初始化一个单例实例main()并让它对通知做出反应。

于 2013-03-20T20:53:18.423 回答
1

我会在应用程序委托中执行此操作。应用程序委托是最先创建的对象之一(远在您的任何视图控制器之前!),它对所有其他对象全局可见。因此,如果您实例化这个其他类并使该实例成为您的应用程序委托的属性,那么它对所有其他对象也是全局可见的!

正如我在我的书中所说(http://www.aeth.com/iOSBook/ch13.html#_global_visibility):

您可以自由创建的应用程序委托的公共属性是全局可见的,因为应用程序委托是全局可见的(由于共享应用程序是全局可见的)。

即使您不需要可见性(因为您正在使用通知),应用程序委托也是您拥有的寿命最长的对象;它是在应用程序启动时创建的,并且永远不会被销毁(直到应用程序被杀死)。

于 2013-03-20T20:31:33.103 回答
1

如果你不想把那种东西放在 ViewController 中,AppDelegate 通常看起来是个放置它的好地方。

于 2013-03-20T20:30:33.037 回答
1

您应该将需要在正在运行的应用程序的整个生命周期内保持活动状态的项目放在 AppDelegate.h/m 文件中。

于 2013-03-20T20:30:34.177 回答