在iOS中,如果不在视图控制器中,则应创建对象

时间:2013-03-20 20:28:23

标签: ios objective-c

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

4 个答案:

答案 0 :(得分:2)

将诱人的代码推送到App Delegate 抵制冲动一样诱人。理想情况下,应用程序委托应尽可能远离正常的应用程序执行。它是全局实例的唯一原因是它可以充当应用程序和系统之间的委托。为了保持权力分离,在main()中初始化单例实例并对通知作出反应。

答案 1 :(得分:1)

如果你不想把这种东西放在ViewController中,那么AppDelegate通常看起来是一个不错的地方。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

  

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

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