我无法编译以下代码,我不知道为什么。为了便于阅读,我将其简化为这一点。
@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 ,它也可以工作。MyClass 的实例将被 Objective-C 使用,所以我需要使用 @objc。
提前感谢您的帮助。