我使用的擴展與像類方法的現有類嘗試:如何在帶有泛型的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