iOS应用程序中的多个UITableViewController&;子类化

iOS应用程序中的多个UITableViewController&;子类化,ios,uitableview,subclass,Ios,Uitableview,Subclass,我正在研究斯坦福大学的CS193P iOS课程,在其中一个作业中,我们需要多个UITableView。在作业笔记中,讲师说: “并使用您出色的面向对象编程设计技能 一定要尽可能多地重用代码 应用程序非常相似。创建一个 UITableViewController的子类来执行某些操作,然后创建 类的子类来做一些稍微更精细的事情。” 所以,与其说 @interface myFirstTableViewController : UITableViewController @interface myFi

我正在研究斯坦福大学的CS193P iOS课程,在其中一个作业中,我们需要多个UITableView。在作业笔记中,讲师说:

“并使用您出色的面向对象编程设计技能 一定要尽可能多地重用代码 应用程序非常相似。创建一个 UITableViewController的子类来执行某些操作,然后创建 类的子类来做一些稍微更精细的事情。”

所以,与其说

@interface myFirstTableViewController : UITableViewController
@interface myFirstTableViewController : UITableViewController

他暗示我们使用:

当我这样做时,
mySecondTableViewController
只有以下方法:

initWithNibName
viewDidLoad
didReceiveMemoryWarning
这里发生了什么事?在
mySecondViewController
中,我是否只需要实现那些与
myFirstTableViewController
不同的方法(可能会做一些细微的更改,然后调用
super
版本


此外,这是正确的做法还是最好将我的每个自定义电视作为UITableViewController的一个单独子类?

更可能的模式是:

@interface CommonTableViewController : UITableViewController
...
@interface FirstTableViewController : CommonTableViewController
...
@interface SecondTableViewController : CommonTableViewController

然而,设置上下文无关规则是很困难的;这实际上取决于有多少类似的代码可以移动到公共父级中。(如果
mysecondableviewcontroller
做了
myFirstTableViewController
所做的一切,再加上一点,那么您构建事物的方式也不一定是错误的。)

谢谢。因此,也许可以将所有真正通用的代码放在“CommonTableViewcontroller”中,而实际不同的代码放在“first”和“second”中?这是所有这些的新手,刚刚开始使用我的代码,现在知道,对于我没有在mySecondTableViewController中实现的任何方法,都会调用超级版本。对。继承的子版本是eve它的父对象是rything,以及它明确表示它另外做的任何事情……或者它明确表示它做了不同的任何事情(即重写)。好的,看来在这种特殊情况下,子类化可能不是正确的做法,因为我要么不得不妥协我的代码(属性名等)为了能够使用我的超类的方法或再次实现相同的方法,在这种情况下,我可以只使用UITableViewController的一个单独的子类。但我学到了一些东西:-)这个答案帮助我找到了如何做我需要的事情。我正在尝试找出如何为两个不同的故事板uitableviewcontroller实例重用相同的子类,每个实例之间存在一些差异。两者都有共同的代码,所以我不想创建一个重复的类。我现在看到我可以有一个普通的子类,然后用两种不同的方式关闭子类!谢谢
initWithNibName
viewDidLoad
didReceiveMemoryWarning
@interface CommonTableViewController : UITableViewController
...
@interface FirstTableViewController : CommonTableViewController
...
@interface SecondTableViewController : CommonTableViewController