我正在研究斯坦福大学的CS193P iOS课程,在其中一项任务中,我们需要多个UITableViews。在任务说明中,讲师说:
“并使用你真棒的面向对象编程设计技巧 一定要尽可能多地重用代码。很多MVC都在这 应用非常相似。创建一个完全没问题 UITableViewController的子类做某事,然后创建一个 该类的子类做了稍微精炼的事情。“
所以而不是
@interface myFirstTableViewController : UITableViewController
和
@interface mySecondTableViewController : UITableViewController
他暗示我们使用:
@interface myFirstTableViewController : UITableViewController
和
@interface mySecondTableViewController : myFirstTableViewController
当我这样做时,mySecondTableViewController
只有以下方法:
initWithNibName
viewDidLoad
didReceiveMemoryWarning
这里发生了什么?在mySecondViewController
中,我是否只需要实现与myFirstTableViewController
不同的方法(可能会略微更改,然后调用super
版本?
另外,这是正确的做事方式还是最好将每个自定义tvc作为UITableViewController的单独子类?
答案 0 :(得分:2)
模式越有可能:
@interface CommonTableViewController : UITableViewController
...
@interface FirstTableViewController : CommonTableViewController
...
@interface SecondTableViewController : CommonTableViewController
然而,设置无上下文的规则很困难;这实际上取决于可以将多少类似的代码移动到公共父代。 (如果mySecondTableViewController
完成myFirstTableViewController
所做的一切,再加上一点点,你构建事物的方式也不一定错。)