将大多数逻辑和模型放在appDelegate中是否可以?
对于我的大多数应用程序,我已将所有逻辑放在类中,每个ViewController也会获得类的引用,或者创建/释放对象本身。
我刚刚开始阅读一本关于IOS的书,作者似乎想将app逻辑放在appDelegate中,而viewcontrollers只是将动作转发给执行实际工作的appDelegate方法。
作者是这样做的,因为它们是简单的例子,或者这是我应该学习的东西,并开始在我的应用程序中做什么?
首先,请参阅最佳描述应用程序代理的内容? 它如何融入整个概念?
应用程序委托是应用程序的委托。 它不是容纳你不知道的地方的地方。 它不是全局变量的存储位置。 它是UIApplication
对象的委托。 因此,将代码放在与启动应用程序,终止,切换到后台等相关的代码是正确的地方。等与应用程序如何适应操作系统有关的事情。
应用程序委托是一个控制器,因此它不应该保存数据。 数据在模型中。 应用程序委托可以在启动时创建模型并将其交给其他控制器,但它不是模型的API。 通常,模型是单例,而不是由应用程序委托创建。 两种方法都有优势。
大多数示例代码将模型代码放在app委托中,因为对于简单的示例,它需要的代码少一些。 但在实际程序中,它使应用程序委托过于复杂,并且显着损害了代码重用。 您的应用程序委托通常应该非常小,并且其中的大多数方法应该是
一部分。
我会说这是因为这些例子可能很简单。 对于任何相当复杂的现实应用程序,appdelegate类很快就会变得笨拙。
从技术上讲,你可以做到。 在编程实践方面,不要。 一旦你在appDelegate中放了很多东西,它就会变得非常混乱。 我的建议是不管它。
除了全局变量之外,您不需要在appDelegate中放置任何内容。 如果你有时需要它,我的建议是使用像singleton模式这样的东西。 一般来说,全局变量并不是一种好的做法。
希望这可以帮助。
- 懒惰variables给'实例成员不能用于types'错误
- Cocoapods iOS – 谷歌已被弃用 – 如何摆脱警告?
- 采用AFNetworking 2.0拦截和防止redirect的推荐方法是什么?
- 如何在iOS中使用animation概念将一个UIview推送到另一个UIview
- 为什么在viewDidLoad中不执行SegueWithIdentifier工作?
- 对iOS贴纸包进行代码签名
- 'GPUImageOutput <GPUImageInput>'没有可见的@interface声明select器'imageFromCurrentlyProcessedOutputWithOrientation:'
- 我们可以在UITableViewCell中添加滚动视图吗?
- 在AppDelegate中,主UIWindow如何实例化?