声明一个符合Swift协议的变量或常量

在Swift中,你如何声明一个符合协议的变量(或常数)?

我试过了

let whatever: protocol <myProtocol>

let whatever: myProtocol

但是当设置它时,我得到了错误

Cannot convert the expression's type '()' to type 'myProtocol'

没有必要做这样的事情,因为当你声明你的变量(或常量)的类型时,应该知道它是否符合协议。 但是,如果您有时使用传统的objc id,您可能会得到一个AnyObject 。 在这种情况下,你可以做一个downcast把它转换为协议类型并使用它。

let whatever: AnyObject = someObj
let conformProtocol = whatever as myProtocol

conformProtocol.callMethod()

或者你可能想as? 为更安全的转换。


从文档:

协议是命名类型,因此它们可以与其他命名类型一样出现在代码中的所有相同位置,如协议类型中所述。 但是, 不能构建协议的实例,因为协议实际上并未提供它们指定的要求的实现。

链接地址: http://www.djcxy.com/p/20743.html

上一篇: Declare a variable or constant that conforms to a protocol in Swift

下一篇: Is passing by reference is a special case of passing as pointer?