声明类变量符合Swift协议



在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

最新更新