指定实现协议的类

时间:2016-07-06 09:48:32

标签: swift swift-protocols

鉴于有2个协议P1P2,可以指定符合这两种协议的类型,例如:

typealias P = protocol<P1, P2>

是否有类似的方法来指定类型的类型并且还符合协议,例如这样的事情(不起作用):

typealias P = UIView: P1

1 个答案:

答案 0 :(得分:0)

不幸的是,它在Swift 2.2中是不可能的,并且不会在Swift 3.0中添加。 您希望为继承某些类并实现协议的类型创建Type规则。

Image

因此,您将拥有此类层次结构并且具有您希望存储其中一个类的属性并不常见。 同样在POP范例中,您应该有其他协议,为您提供UIView所需的属性。

也许你有这样的用例: enter image description here

然后创建其他类: enter image description here

您的类型将为P1Base

P.S。这就是为什么如果你在Obj-c中创建@property (nonatomic) UIViewController<UITableViewDelegate> *protocolClassProperty;,它将在Swift中被桥接为UIViewController!