指定实现协议的类

MeX*_*eXx 5 swift swift-protocols

由于有2个协议P1P2,可以指定符合两国的协议,如类型:

typealias P = protocol<P1, P2>
Run Code Online (Sandbox Code Playgroud)

是否有类似的方式来指定类型的类型,并且也符合协议,例如像这样的东西(不起作用):

typealias P = UIView: P1
Run Code Online (Sandbox Code Playgroud)

Ale*_*min 0

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

图像

因此,拥有这样的层次结构并且拥有想要存储此类之一的属性的情况并不常见。同样在 POP 范例中,您应该有额外的协议来为您提供 UIView 所需的属性。


也许你有这样的用例: 在此输入图像描述

然后创建附加类: 在此输入图像描述

你的类型将是P1Base


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