Можно ли объявить цепочку суперклассов в объявлении интерфейса? - PullRequest
0 голосов
/ 19 сентября 2010

Это может быть глупый вопрос, но я не нашел никакой информации по нему.

Допустим, некоторые из классов в моей программе происходят от MySubView, который получен из другого класса, UIViewController.

Я бы объявил это так:

@interface NewViewController : MySubView {
    // code ...
}
@end

В будущем клиент хочет изменения и хочет другое представление с таблицей.Поэтому мне нужно создать другой класс, называемый MySubTableView, который является UITableViewController, подклассами которого являются MySubView.

Я думал, что будет проще, если я смогу сделать что-то вроде этого:Но это не работает.

Есть ли способ сделать это с Xcode, или мне нужно специально создать сам класс?

РЕДАКТИРОВАТЬ:

I 'Я не ищу множественного наследования.Будет следовать прямая иерархия наследования:

NewViewController
UITableviewController
MySubView
UIViewController

Ответы [ 2 ]

2 голосов
/ 19 сентября 2010

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

Даже если бы это было возможно, возникли бы проблемы, такие как вызов правильных инициализаторов, поскольку они не будут вызываться автоматически.Рассмотрим иерархию типа A : B : C - теперь вы можете инициализировать B, используя, например, [super init] в A s инициализаторе, но как B узнает, какой инициализатор вы хотите, чтобы он вызывал C?

1 голос
/ 19 сентября 2010

Objective-C не поддерживает множественное наследование ... Но программисты Objective-C редко пропускают его, потому что вместо этого вы можете выполнять многие из тех же задач, используя Категории.Читайте о категориях Objective-C.

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