0

我无法编译以下代码,我不知道为什么。为了便于阅读,我将其简化为这一点。

@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。

提前感谢您的帮助。

4

0 回答 0