UIView / UIImageView наследование - PullRequest
1 голос
/ 22 марта 2011

В моей программе есть класс Object, который наследуется от UIView. У меня также есть другие объекты: круг, квадрат, треугольник, которые наследуются от объекта.

Моя проблема в том, что я хотел бы создать возможный объект с именем Image, который также наследуется от Object. Я хотел бы, чтобы все объекты на экране наследовали от Object, а затем передали указатель NSArray на мои физические функции, которые содержат все объекты на экране.

Как лучше всего, чтобы мой объект Image приобрел все свойства моего класса Object?

Должен ли я просто создать новые свойства для моего объекта Image или есть способ унаследовать Object и по-прежнему иметь возможность отображать изображение, поскольку Object наследует от UIView, а не UIImageView.

Ответы [ 3 ]

2 голосов
/ 22 марта 2011

Вы поняли, что класс не может расширять два родительских класса.

Может ли ваш "Объект" быть протоколом вместо класса?Таким образом, круг, квадрат и изображение могут реализовать этот протокол, расширяя UIView или UIImageView по мере необходимости?

1 голос
/ 22 марта 2011

Это очень ... необычный способ сделать это.У вас был опыт работы с Java?

Что вы пытаетесь делать с фигурами?Вы пытаетесь нарисовать их в этих классах?Здесь вы стираете линии MVC.Судя по всему, ваши классы Circle, Square и т. Д. Являются одновременно моделью и представлением, чего не должно быть.Если вы пытаетесь нарисовать фигуры, вы бы не создавали для них классы - вы бы использовали Кварцевые методы рисования , чтобы нарисовать их в виде контроллера вашего представления.Если вы пытаетесь сохранить информацию об этих фигурах, вы не захотите, чтобы они наследовали от UIView.NSObject (или пользовательский класс Shape) будет лучшим вариантом.(Также плохая идея вызывать класс «Объект» - его можно спутать с NSObject).

Во втором абзаце появился мой первый вопрос.Ваш NSArray не должен содержать переменные одного типа - это сильно отличается от массивов Java (и других языков, таких как C # и C).Поэтому, если не было каких-либо методов или иваров, которые вы хотели бы унаследовать, не было причин объявлять класс Object.

Что вы собираетесь делать с Image при отображении изображений?Если вы просто хотите отобразить изображения (представление), то сделайте его подклассом UIImageView (который является подклассом UIView).Если вы хотите хранить информацию об изображениях, сделайте ее подклассом Shape (или, в данном случае, вашим объектом).Однако вы действительно не можете делать то, что хотите (наследовать как от Object, так и от UIImageView), потому что вы не должны комбинировать функциональность представлений и моделей.

На самом деле, ваш лучший вариант здесь - пересмотреть ваши классы, заставить их придерживаться MVC и переосмыслить цепочку наследования.Надеюсь, это поможет!

1 голос
/ 22 марта 2011

Простейшей вещью было бы иметь Image, наследуемый от Object, а затем иметь Image собственный подпредставление типа UIImageView.

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