Наследовать от двух классов - PullRequest
0 голосов
/ 29 мая 2011

Я создаю универсальное приложение для iOS, то есть оно будет работать на iPhone и iPad. Теперь у меня есть UIViewController, который будет отображаться на обоих, но по-разному. На iPhone он будет содержать UITableView, на iPad - AQGridView. Данные будут такими же. Поэтому оба контроллера будут совместно использовать много методов и переменных экземпляра.

Обычно я создаю подкласс UIViewController с моими методами и переменными экземпляра, а затем создаю два подкласса этого класса, куда я помещаю материал, специфичный для устройства.

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что версия моего подкласса для iPhone также должна наследоваться от другого класса с помощью некоторых приятных методов:

            UIViewController sublcass                   Some Other Class
                        |                                      |
            -------------------------------    -----------------
            |                             |    |
      iPad sublcass                 iPhone subclass

Добавление версии iPad в качестве подкласса iPhone sublcass невозможно, поскольку Some Other Class предназначен для использования с UITableView.

Я почти уверен, что это невозможно в Objective-C, но я хотел спросить, прежде чем приступить к созданию огромного беспорядка копирования и вставки. Итак: какие-либо предложения о том, как сделать мой код простым?

1 Ответ

2 голосов
/ 29 мая 2011

Да, множественное наследование невозможно в Задаче C. Однако с чистым и логичным дизайном это не является необходимым и может быть заменено протоколами.Однако, если это не так (однако у меня есть некоторые сомнения по этому поводу), я предлагаю вам проверить шаблон дизайна декоратора .

, даже если шаблон декоратора не подходит вашемуЯ предлагаю вам использовать агрегацию вместо наследования (ну, это то, что на самом деле использует декоратор).

...