将大多数逻辑和模型放在appDelegate中是否可以?

时间:2012-02-09 14:56:33

标签: ios

对于我的大多数应用程序,我已将所有逻辑放在类中,每个ViewController也会获得类的引用,或者创建/释放对象本身。

我刚刚开始阅读有关IOS的书,作者似乎想将app逻辑放在appDelegate中,而viewcontrollers只是将动作转发给执行实际工作的appDelegate方法。

作者是否只是这样做,因为它们是简单的例子,或者这是我应该学习的东西,并开始在我的应用程序中做什么?

3 个答案:

答案 0 :(得分:13)

首先,请参阅What describes the Application Delegate best? How does it fit into the whole concept?

应用程序委托是应用程序的委托。它不是容纳你不知道放在哪里的所有东西的地方。它不是全局变量的存储位置。它是UIApplication对象的委托。所以这是放置与启动应用程序,终止,切换到后台等相关的代码的正确位置。等与应用程序如何适应操作系统有关的事情。

app委托是一个控制器,所以它不应该保存数据。数据在模型中。应用程序委托可以在启动时创建模型并将其交给其他控制器,但它不是模型的API。通常,模型是单例,而不是由应用程序委托创建。这两种方法都有优势。

大多数示例代码将模型代码放在app委托中,因为对于简单的示例,它需要的代码少一些。但在实际程序中,它使应用程序委托过于复杂,并且显着损害了代码重用。您的应用代理通常应该非常小,其中的大多数方法都应该是<UIApplicationDelegate>的一部分。

答案 1 :(得分:3)

我想说的是因为这些例子可能很简单。对于任何相当复杂的现实应用程序,appdelegate类很快就会变得笨拙。

答案 2 :(得分:3)

从技术上讲,你可以做到。在编程实践方面,不要。一旦你在appDelegate中放了很多东西,它就会变得非常混乱。我的建议是不管它。

除了全局变量之外,您不需要在appDelegate中放置任何内容。如果你有时需要它,我的建议是使用像singleton模式这样的东西。一般来说,全局变量并不是一种好的做法。

希望这有帮助。