声明一个符合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?