使用协议扩展和@objc时无法编译

时间:2015-12-03 16:30:11

标签: objective-c swift swift-protocols

我无法获得以下代码进行编译,我不确定原因。为了便于阅读,我已将其简化为此。

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

提前感谢您的帮助。

0 个答案:

没有答案