声明类变量符合Swift协议

时间:2014-08-17 00:08:24

标签: swift protocols

在Swift中,我如何声明一个明确表明它符合某些协议的变量? objective-c等价物为@property id<NSObject> 根据我的理解,这样做:

var a: NSObject

声明一个NSObject协议类型的变量但是我没有这样做,我想声明一个符合AnyObject类型的变量。我也有兴趣了解如何声明每个对象符合该协议的对象数组。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

NSObject 协议作为NSObjectProtocol导入Swift(由于名称与NSObject 冲突),因此,它将是

var a: NSObjectProtocol

答案 2 :(得分:1)

在Swift 4中,它可能更简单。您可以同时声明某些符合协议的类的变量。你可以这样做:

var someVar: ClassA & ProtocolA & ProtocolB