iphone - 让 ViewController 包含大量代码是否正确?

标签 iphone objective-c ios cocoa-touch design-patterns

我对 Cocoa 和 Objective-C 还是很陌生(<1 年)。我的应用程序现在有大约 50 多个类,但是一些 ViewController 代码变得非常拥挤,比如 700 行或更多。

我的问题是:拥有一个“大”的 ViewController 是否合适,或者是否有将代码拆分成多个部分的模式?许多代码都在实现委托(delegate)方法,这就是为什么我不知道如何将其移走。

我知道,不过我可以使用 pragma 标记进行结构化。

感谢任何输入。

编辑(2013 年 12 月):有一个 great article from Chris Eidhof关于这个主题的 objc.io。他还在 Macoun 2013/Frankfurt 上谈到了这个主题。分离出 UITableView 协议(protocol)是一个很好的模式。

EDIT2 NSScreencast 上还有 2 个视频解释重构 ViewController 的概念(第 102 集和第 103 集)。

最佳答案

据我所知,大型 View Controller 的最常见原因之一是 MVC 架构中缺乏分离黑白模型和 Controller 。换句话说,您是否在 View Controller 中处理数据?

如果是,从 VC 中取出模型组件并将其放入单独的类中。这也会迫使您思考更好的设计。

供引用,在 View Controller 中:

  • 处理 UIView 和其中包含的 UI 元素的所有更改。
  • 所有动画、过渡和 CALayer 操作。

在模型中:

  • 数据的所有处理,包括排序、转换、存储等。

关于iphone - 让 ViewController 包含大量代码是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8444078/

相关文章:

iphone - UISegmentedControl 委托(delegate)/触摸事件

objective-c - 有人可以向我解释为什么我在以下代码段中“需要”一个保留语句吗?

objective-c - 当焦点位于字段上时删除的 NSTextField/NSSearchField 默认值

objective-c - 无法快速访问 FMDatabaseAdditions 方法?

iphone - 隐藏 UIStatusBar 如何应用于显示的 UIViews?

ios - 在apple store上发布需要ipad版本吗?

iOS从文档目录加载文件

ios - 为什么 IBAction 抛出异常?

iphone - CGContextDrawImage 崩溃

ios - 滚动 CollectionView 期间不必要地打开 YouTube 播放器