指定实现协议的 class
Specify a class that implements a protocol
假设有 2 个协议 P1
和 P2
,可以指定一个符合这两个协议的类型,例如:
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!
假设有 2 个协议 P1
和 P2
,可以指定一个符合这两个协议的类型,例如:
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!