在Swift中,我如何声明一个明确声明它符合某些协议的变量?objective-c的等价物是@property id<NSObject>
根据我的理解,这样做:
var a: NSObject
声明了一个NSObject协议类型的变量,但我不想这样做,我想声明一个符合AnyObject
类型的变量。我还想知道如何声明一个对象数组,其中每个对象都符合该协议。
这里确实不需要AnyObject
;如果你关心的是协议Proto
的一致性,你可以简单地写var a: Proto
。(在某些情况下,您的协议可能会使用Self
或其他需要将其用作通用约束的东西;然后使用class C<T: Proto> { var a: T }
NSObject
协议作为NSObjectProtocol
导入到Swift(由于与NSObject
类的名称冲突),因此,它将是
var a: NSObjectProtocol
在Swift 4中可能有一种更简单的方法。您可以同时声明符合协议的某些类的变量。你可以这样做:
var someVar: ClassA & ProtocolA & ProtocolB