方法不能公开声明

时间:2017-07-31 10:57:28

标签: swift

我定义了以下类:

public class MyService {
  public init() {
  }

  // ERROR: Method cannot be declared public because its parameter uses an internal type
  public func doTask(completion: @escaping (Car?) -> Void) {
  } 

  // No problem here
  public func doSomething(name: String) {
  }
}

但是,doTask(completion:)出现编译错误,但doSomething(name:)中没有此错误,如上所示。

为什么呢?如何摆脱这个错误?

1 个答案:

答案 0 :(得分:0)

这是因为您的实际签名(我猜测的不是您已粘贴的签名)使用的是文件或模块内部的类型。拥有一个public的功能是没有意义的,但你需要提供一个私人类型来呼叫 - 怎么会有人打电话呢?

要么将使用过的类型设为公开,要么将该功能设为非公开。