如何选择在 View 和 ViewController 中放置哪些代码?
Posted
技术标签:
【中文标题】如何选择在 View 和 ViewController 中放置哪些代码?【英文标题】:How to choose what code to put in a View vs. a ViewController? 【发布时间】:2010-11-06 10:58:39 【问题描述】:在 Xcode 中,实用程序应用程序模板使用以下内容创建项目:
主视图、主视图控制器
和
FlipsideView、FlipsideViewController
在我的应用程序中,这两个视图对应于主 UI 和一个首选项屏幕。显然,我希望首选项反映在主 UI 中并保存到磁盘以记住设置。我知道该怎么做。
问题是,在查看类似应用程序的示例代码时,我发现有些人将大部分活动代码放在一个视图中,而视图控制器只是一个存根,而另一些则相反。
在决定将我的大部分功能放在哪里时,是否有经验法则?
【问题讨论】:
【参考方案1】:一种决定方法:如果您的应用收到内存不足警告,则默认行为是任何当前不可见的视图都可能被销毁。这意味着,如果您有任何无法轻松重新创建的状态信息,则最好不要将其保留在您的视图中。
所以这取决于你的大部分功能在做什么:如果它维护用户创建的信息,它需要在视图控制器中。
【讨论】:
【参考方案2】:如果你想成为一个 MVC 纯粹主义者,视图切换和事件处理之类的东西应该放在控制器中,视图构建代码应该放在视图中。
但如果您在整个应用程序中保持一致,则可以将一些应用程序逻辑放入视图中。
【讨论】:
我同意通常只有视图构建代码属于视图类。而且通常不需要视图构建代码,因此您可以完全摆脱视图类。【参考方案3】:*** 上已经有几个问题涉及模型-视图-控制器。例如,请参阅What goes into the "Controller" in "MVC"?。
在您的特定场景中,偏好本身是一种跟踪用户偏好的模型。保存和加载这些偏好是控制器的职责。显示这些偏好并为用户提供更改它们的方法是视图的职责。最后,当用户更改这些偏好时,视图会将其报告给控制器,控制器会对模型进行适当的更改。
【讨论】:
以上是关于如何选择在 View 和 ViewController 中放置哪些代码?的主要内容,如果未能解决你的问题,请参考以下文章
如何选择在 View 和 ViewController 中放置哪些代码?
基于视图的应用程序 - [window addSubview:viewController.view] 之后的 viewcontroller retainCount;
当 touchUpInside Back 按钮带有 [self.view removeFromSuperview] 时,上一个视图无响应