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