将类变量声明为符合 Swift 协议

bar*_*dog 4 protocols swift

在 Swift 中,我如何声明一个明确声明它符合某些协议的变量?根据@property id<NSObject> 我的理解,objective-c 的等效项是:

var a: NSObject

声明一个 NSObject 协议类型的变量,但我不这样做,我想声明一个AnyObject符合类型的变量。我也有兴趣找出如何声明一个对象数组,其中每个对象都符合该协议。

jtb*_*des 5

这里真的没有必要AnyObject;如果您只关心是否符合协议Proto,则可以简单地编写var a: Proto. (在某些情况下,您的协议可能会使用Self或其他要求将其用作通用约束的东西;然后您将使用class C<T: Proto> { var a: T }.

  • 由于 `Proto` 是一种协议类型,所以“属于 Proto 类型”并不意味着除了一致性之外的任何其他内容。不幸的是,在某些情况下您会看到“Self”警告,这会阻止您使用此语法。我希望这可能会在以后的 Swift 更新中改变。 (2认同)