这里有点新闻,关于架构的一般问题 .
我有一个iOS应用程序,它有两个独立的视图,它们都在使用相同的核心数据模型 .
我已经为其中一个视图实现了NSFetchedResultsController作为本地属性 . 很多代表方法实现......
-
(void)controllerWillChangeContent:(NSFetchedResultsController *)控制器
-
(void)controller:(NSFetchedResultsController *)controller didChangeSection:(id)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type
-
(void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath
-
(void)controllerDidChangeContent:(NSFetchedResultsController *)控制器
-
(NSFetchedResultsController *)fetchedResultsController
...其中大部分是样板文件,但我想避免将这些复制/粘贴到另一个视图中 .
有关重新架构的任何建议,以避免这种异端......?
1 回答
首先,当你提到观点时,我希望你的意思是"view controllers" . 将此代码放入
UIView
子类将是非常糟糕的设计 . 它's controller code, so don' t把它放在一个视图中 .至于限制复制,您使用的是面向对象的语言,因此有一种可能性是使这两个视图控制器都从公共父类继承 . 将重复的代码移动到父级,并让每个视图控制器调用
super
's implementation before doing whatever their own implementation requires. That will probably require some care to make sure that the superclass'的实现对于它的两个子类都是通用的 . 如果这证明非常困难,可能是代码不够通用,无法重构以提供帮助 .