我使用的扩展与像类方法的现有类尝试:如何在带有泛型的Swift扩展中使用带可选类方法的协议?
@objc public protocol MyProtocol {
optional class func foo() -> Int
}
,我使用这个协议与通用类似的扩展:
extension MyClass {
public func bar<T: MyProtocol>() {
...
let x: Int = T.self.foo!() // if I do not use "self" or "!" here, I will have a compiler error
...
}
这应该工作,但是当我建立它,Xcode说:“命令/应用程序/ Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc失败,退出代码1”。如果我在协议中不使用“可选”,我不需要在扩展中解开foo(),即使删除“self”,一切都可以正常工作。任何人都可以告诉我为什么以及如何使可选工作正确吗? 在此先感谢。
关于此的实际代码要复杂得多。这是我如何优化与路由器一起使用Alamofire的设计。可以不使用可选的(只是一些额外的行),但问题真的让我困惑。谢谢你的解释! – Wizard