У меня есть объект 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