我有包含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