在Swift中,我如何声明一个明确表明它符合某些协议的变量? objective-c等价物为@property id<NSObject>
根据我的理解,这样做:
var a: NSObject
声明一个NSObject协议类型的变量但是我没有这样做,我想声明一个符合AnyObject
类型的变量。我也有兴趣了解如何声明每个对象符合该协议的对象数组。
答案 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