我有一個iPodLibraryGroup對象,藝術家和專輯都從它繼承。我可以避免顯式轉換具有公共子類的對象嗎?
當談到我的視圖控制器,雖然我發現我重複了很多代碼,例如我有一個ArtistListViewController和和AlbumListViewController,即使他們都做基本相同的事情。
我最終重複代碼的原因是因爲這些視圖控制器都引用Artist對象或al Album對象,我不確定如何設置它以便一個視圖控制器可以同時處理 - 這些視圖控制器主要訪問對象與iPodLibraryGroup共有的方法。
舉個例子,有希望使之更清楚考慮這個代碼AlbumListViewController:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
Album *album = nil;
album = [self albumForRowAtIndexPath:indexPath inTableView:tableView];
…
if (!album.thumbnail)
{
[self startThumbnailDownload:album forIndexPath:indexPath inTableView:tableView];
cell.imageView.image = [UIImage imageNamed:@"Placeholder.png"];
}
else
{
cell.imageView.image = album.thumbnail;
}
return cell;
}
這是基本上完全重複ArtistListViewController(有很多重複的代碼的地獄一起)只是讓我可以將局部變量作爲藝術家而不是專輯進行類型化。
有沒有一種方法可以不明確地在這裏設置藝術家或專輯,以便相同的代碼可以適用於任何iPodLibraryGroup的子對象?
這會工作得我想像,但該協議的解決方案標誌着我的答案是更快的實施。 – prendio2 2010-04-07 16:11:20