在几个文件上设置viewController子类的代码是一个好主意吗?

时间:2013-04-08 08:01:57

标签: objective-c xcode4.5

我制作了一个大节目。这是我使用的那种标题:

@interface:BGDetailBusinessViewController<UITableViewDataSource,UITableViewDelegate,UITextFieldDelegate,UIScrollViewDelegate,BGDetailFooterViewProtocol,BGDetailPhotoCell,PageControlDelegate,UINavigationControllerDelegate,UIActionSheetDelegate,BGShareSocialDelegate,BGReviewControllerProtocol>

我觉得代码闻起来了。那个文件BGDetailBusinessViewController.m负责处理太多事情。

消除异味的正常模式是什么?

是否有大型Objective-C代码的示例开源代码?这样我们就可以看到专业人士在制作真正非常大的节目时的表现。

1 个答案:

答案 0 :(得分:3)

你是对的 - 在模型视图控制器模式(MVC)中,控制器的工作是充当&#39; glue&#39;在模型和视图之间。因此它不应该包含很多代码,它所包含的代码负责在视图和模型之间进行调解。

如果您正在使用界面构建器,则可以很容易地在控制器中使用大量代码。可以避免这种情况,但我的建议是使用基于代码的视图,以进行更复杂的工作。

  • 这些视图应该使用合成 - 查找可重用的UI元素集合并将它们构建为离散类。从这些构建你的观点。
  • 创建自己的委托协议,以在视图和模型之间分流数据。通常,控制器将是委托的具体实现,但如果它是一个大问题,您可以使用单独的类,并将其作为视图控制器的成员(依赖注入)提供。
  • 使用面向对象创建丰富的模型。
  • 如果拥有一个大型类确实有意义,请使用类别封装相关部分。

在您的具体情况下,为什么不将视图作为UITableViewDelegate和数据源,只是提供一种方法来传递所需的数据?这对于MVC设计模式更为真实。