指定实现协议的 class

Specify a class that implements a protocol

假设有 2 个协议 P1P2,可以指定一个符合这两个协议的类型,例如:

typealias P = protocol<P1, P2>

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

typealias P = UIView: P1

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

因此,您拥有这样的层次结构并拥有 属性 您想要存储其中一个 class 的地方并不常见。 同样在 POP 范例中,您应该有额外的协议,为您提供 UIView 所需的属性。


也许你有这样的用例:

然后创建额外的 class:

你的类型将是 P1Base


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

中桥接为 UIViewController!