我正在尝试使用具有类方法的现有类的扩展,例如:
@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 说“Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1”。如果我不在协议中使用“可选”,我不需要在扩展中解开 foo() 并且即使我删除了“self”,一切都会正常工作。谁能告诉我为什么以及如何使可选功能正常工作?提前致谢。