我无法获得以下代码进行编译,我不确定原因。为了便于阅读,我已将其简化为此。
@objc protocol MyProtocol {
func someMethod() -> String
}
extension MyProtocol {
func someMethod() -> String {
return "Foo"
}
}
@objc class MyClass: NSObject, MyProtocol {
}
let obj: MyProtocol = MyClass()
obj.someMethod()
奇怪的是,如果我将obj声明为类似MyClass类型 -
let obj: MyClass = MyClass()
工作正常。如果我从协议定义中删除@objc,它也可以工作。 Objective-C将使用MyClass的实例,因此我需要使用@objc。
提前感谢您的帮助。