У меня есть объект iPodLibraryGroup, и Artist и Album оба наследуются от него.
Когда дело доходит до моих контроллеров представления, хотя я нахожу, что я дублирую много кода, например, у меня есть ArtistListViewController и и AlbumListViewController, хотя они оба делают в основном то же самое.
Причина, по которой я в итоге продублировал код, заключается в том, что каждый из этих контроллеров представления ссылается либо на объект Artist, либо на объект al 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 просто для того, чтобы я мог типизировать локальную переменную как Исполнитель вместо Альбома.
Есть ли способ не явно указывать здесь Artist или Album, чтобы один и тот же код мог работать для любого объекта, являющегося дочерним для iPodLibraryGroup?