鉴于有2个协议P1
和P2
,可以指定符合这两种协议的类型,例如:
typealias P = protocol<P1, P2>
是否有类似的方法来指定类型的类型并且还符合协议,例如这样的事情(不起作用):
typealias P = UIView: P1
答案 0 :(得分:0)
不幸的是,它在Swift 2.2中是不可能的,并且不会在Swift 3.0中添加。
您希望为继承某些类并实现协议的类型创建Type
规则。
因此,您将拥有此类层次结构并且具有您希望存储其中一个类的属性并不常见。 同样在POP范例中,您应该有其他协议,为您提供UIView所需的属性。
您的类型将为P1Base
P.S。这就是为什么如果你在Obj-c中创建@property (nonatomic) UIViewController<UITableViewDelegate> *protocolClassProperty;
,它将在Swift中被桥接为UIViewController!