множественное наследование в target-c с уже созданными суперклассами - PullRequest
0 голосов
/ 29 сентября 2011

Скажем, я хочу создать свой класс контроллера представления с 2 суперклассами;UIViewController и UIView.

это возможно?или есть другой способ обойти это?

Ответы [ 3 ]

3 голосов
/ 29 сентября 2011

Множественное наследование не поддерживается Objective-C (надеюсь, потому что множественное наследование обычно является синонимом плохого дизайна и также приводит к потенциальным сложным проблемам, таким как проблема с алмазом).

Используйте протоколы вместо этого, если вам нужна концепция "общего программирования интерфейс " (общий API для нескольких классов)

В любом случае, обратите внимание, что создание ViewController наследует UIView в любом случае бессмысленно , поскольку это совсем не те же объекты и в отдельных частях шаблона MVC . (UIViewController находится в части «Контроллер», возможно, содержит элементы поведения, тогда как UIView является частью «Вид», а не частью «Контроллер», и должен только управлять отображением / отображением представления ваших элементов).


Очевидно, что существует некоторое недопонимание паттерна MVC (вездесущего в среде Какао), и я предлагаю вам уделить некоторое время, чтобы узнать больше о MVC. Это может быть непросто в начале, если вы новичок в ООП, но это стоит понять, так как вам будет легче, когда вы полностью это поймете.

2 голосов
/ 29 сентября 2011

Одна из задач контроллера представления состоит в том, чтобы переносить достаточно состояния, чтобы представление могло быть освобождено и перестроено для обработки ситуаций с нехваткой памяти. Так что, скорее всего, это плохая идея.

Как правило, платформа iOS использует делегаты как удобный способ объединить поведение двух суперклассов: один из них (или оба) подкласса и экземпляр другого класса в качестве переменной-члена. Аккуратный и простой и, возможно, лучший дизайн в любом случае.

2 голосов
/ 29 сентября 2011

Нет множественного наследования в Obj C. Однако вы можете достичь своих целей, используя протоколы, составление и пересылку сообщений.И могу добавить, что поиск по вышеуказанным трем ключевым словам на страницах документации Apple по разработке - отличный способ изучить и начать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...