Я хотел бы создать свойство определенного типа, а также соответствующее протоколу, что я бы сделал в Objective-C следующим образом:
@property (nonatomic) UIViewController<CustomProtocol> *controller;
Я ищу, чтобы указать, что свойство может быть установлено с объектом типа UIViewController, который также соответствует CustomProtocol, чтобы было ясно, что такое базовый класс. Я знаю, что мог бы просто использовать короткую заглушку класса, чтобы получить те же результаты, т.е.
class CustomViewController : UIViewController, CustomProtocol {}
Но это не похоже на самый чистый способ сделать это.