问题在标题中。在 Objective-C 中,如果我想拥有一个 HAS 遵守特定协议(protocol)的属性(如委托(delegate)),可以这样定义它:
@property (weak) id<MyDelegate> delegate;
我如何在 Swift 中执行此操作?
最佳答案
协议(protocol)是一种类型,因此您可以将其用作已声明的变量类型。要使用 weak
,您必须将类型包装为 Optional。所以你会说:
weak var delegate : MyDelegate?
但是为了让它工作,MyDelegate 必须是一个 @objc
或 class
协议(protocol),以保证采用者是一个类(不是结构或枚举,因为它们不能是 weak
)。
关于objective-c - Swift 相当于 id<MyProtocol>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30309028/