Swift相当于id <MyProtocol>?

Rob*_*ers 4 delegates protocols objective-c swift

问题出在标题中.在Objective-C,如果我想有一个属性(如代表),该HAS遵守某个协议它可以像这样被定义:

@property (weak) id<MyDelegate> delegate;
Run Code Online (Sandbox Code Playgroud)

我怎么能在Swift中做到这一点?

mat*_*att 19

协议是一种类型,因此您可以将其用作声明的变量类型.要使用weak,必须将类型包装为Optional.所以你会说:

weak var delegate : MyDelegate?
Run Code Online (Sandbox Code Playgroud)

但为了使其工作,MyDelegate必须是一个@objcclass协议,以保证采用者是一个类(不是结构或枚举,因为它们不能weak).