4

我做了一个大程序。这是我使用的那种标题:

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

我认为代码有异味。那一个文件BGDetailBusinessViewController.m负责处理太多的事情。

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

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

4

1 回答 1

3

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

如果您使用的是界面生成器,那么很容易在控制器中得到大量代码。可以避免这种情况,但我的建议是使用基于代码的视图来完成更复杂的工作。

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

在您的特定情况下,为什么不让视图充当 UITableViewDelegate 和数据源,只需提供一种方法来传递所需的数据?这更符合 MVC 设计模式。

于 2013-04-08T08:15:41.253 回答