Я хочу принять объект класса в качестве параметра конструктору одного из моих классов. Он должен выполнять с ним много настраиваемой работы, и я хочу отвлечь это от пользователя этого класса.
Например, скажем, мой класс - Дилерский центр, и я хочу инициализировать его любым типом транспортного средства.
Итак, у меня есть следующая иерархия:
Dealership : NSObject
Vehicle : NSObject
Truck : Vehicle
Van : Vehicle
Car : Vehicle
Что я хочу сделать, внутри Dealership, реализовать следующий инициализатор:
- (id)initWithVehicle:(Class)aVehicle;
Вместо того, чтобы принимать общий класс, я хотел бы ограничить его только классами типа "Транспортное средство" (которое будет включать все мои унаследованные классы). Я мог бы просто проверить это свойство в инициализаторе, но было бы здорово, если бы был способ обеспечить это во время компиляции, а не ждать обратной связи во время работы.
Кажется, вы можете ссылаться на класс, чтобы ограничить классы, реализующие определенный интерфейс, поэтому я мог бы сделать там хакерство. Есть ли способ ссылаться на объекты класса определенного типа?
EDIT. Обратите внимание, что я редактировал примеры классов, потому что исходный пример немного вводил в заблуждение. Этот пример предназначен только для демонстрационных целей, а не для фактической иерархии классов, с которой я работаю.