我有包含UICollectionView
及其委托方法FilesViewController
,ShareViewController
和UICusomtTableViewCell
对象:的Objective-C继承重复的代码问题
- numberOfSectionsInCollectionView
- numberOfItemsInSection
- cellForItemAtIndexPath
所以最后的方法是这样的:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
SNFileCollectionViewCell *cell = (SNFileCollectionViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:@"FileCollectionViewCell" forIndexPath:indexPath];
SNTestFile *file = [self.files objectAtIndex:indexPath.item];
[cell setText:file.name];
[cell setImage:file.image];
return cell;
}
对于所有我在cellForItemAtIndexPath方法上面列出的这些对象做同样的事情 - 它创建单元格,所以为了优化我的代码,我创建了BaseViewController : UIViewController
并将此方法放在那里,现在FilesViewController
和ShareViewController
继承自BaseViewController
并且具有创建单元格的相同功能,并且我不需要重复的代码。
但是作为UICusomtTableViewCell
这是另一个UIViewController
子类,我不能从BaseViewController继承,因为这是另一个东西。
所以这意味着我不能继承我需要的功能部分,这意味着我需要复制代码,这不是一个好的做法,因为如果项目中的某些东西做的一样,好的程序员永远不会复制它。
你可以建议什么?
所以这个想法是只在一个地方有相同的代码的一部分,然后我可以修改只有一个点,而不是很多点。你知道我的意思。
有了所有的OOP习惯用法,很容易忘记代码重复问题总是可以通过在一堆模块中共享的常规辅助函数来解决。 – user3125367 2014-10-02 19:02:05