I am trying using extension for an existing class with class method like:
@objc public protocol MyProtocol { optional class func foo() -> Int } And I am using this protocol in an extension with generic like:
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 ... } This should work but when I build it, Xcode says "Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1". If I do not use "optional" in the protocol, I do not need to unwrap the foo() in the extension and everything works well even if I remove the "self". Can anyone tell me why and how to make the optional work properly? Thanks in advance.