避免Swift公共类扩展中的公共方法装饰器

时间:2016-02-10 22:39:34

标签: swift interop protocols swift-extensions swift-protocols

假设我在Swift中定义了一个协议:

public protocol MyProtocol {
  func myMethod() -> String
}

然后我在同一个源文件中定义一个类:

public class MyClass: NSObject {
  var myVariable = ""
  func myOtherMethod()
}

然后我在MyClass添加一个扩展名,指定在同一源文件中与MyProtocol的一致性:

extension MyClass: MyProtocol {
  func myMethod() -> String {
    return "abc"
  }
}

当我尝试在Xcode 7.2中编译上面的代码时,我收到编译器错误,告诉我需要为每个扩展的方法添加一个公共装饰器:

extension MyClass: MyProtocol {
  public func myMethod() -> String {
    return "abc"
  }
}

有没有办法避免使用public注释类扩展中的每个方法?

注意:我知道从public删除MyClass会导致上述编译错误消失,但我需要MyClass对使用它的Objective-C代码可见。

0 个答案:

没有答案