iOS 重构/设计 : One view controller to manage different models/streams?

标签 ios objective-c cocoa-touch refactoring

我正在开发一个应用程序,其中有不同类型的“流”(想想 Twitter)。在其中我有一个 - 相当大的 - View Controller 来管理其中的大部分。该流由两个主要实体——用户和帖子——以不同的格式组成。在 View Controller 中,我有一个 NSSTring 属性来确定它是哪种流。这导致了很多这样的事情:

if ([self.postType isEqualToString:@"stream"]) {

    // Do stuff

} else if [self.postType  ...
[...]
[...]

我不知道这是否是明智的最佳解决方案设计,它会导致很多耦合。好处是我避免了很多重复。但是有没有更好/更好的方法来做同样的事情?

最佳答案

如果你真的想避免继承,你可以为每个流使用不同的方案。 为每种流类型映射您的选择器(例如,为每个方案定义一个选择器索引枚举和一个选择器数组 [C-style array] , see here )。 每个方案只会访问不同的选择器数组。

关于iOS 重构/设计 : One view controller to manage different models/streams?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15742742/

相关文章:

ios - 重用的 GMSMapView 在第一次使用时有效,但不适用于任何进一步的 ViewControllers

android - 在 flutter 形式的 sqlite 数据库的 ListView 中加载 7000 多个项目的内存有效方法是什么

objective-c - 使用 ARC 临时保留对象的最佳方法

ios - MultiPeer Framework 委托(delegate)未触发/运行(无 UI)

objective-c - 使用 Nibs 进行国际化。这真的是个好主意吗?

ios - UIBezierPath 内存问题

ios - 不能在 iOS 设备上只运行一个应用程序

ios - 将 SCNNodes 设置为具有恒定的 y 轴值?

objective-c - 如何调用接受 block 字典作为 Swift 参数的 Objective-C 函数?

Objective-C - !!BOOL 有益