我定义了以下类:
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:)
中没有此错误,如上所示。
为什么呢?如何摆脱这个错误?
答案 0 :(得分:0)
这是因为您的实际签名(我猜测的不是您已粘贴的签名)使用的是文件或模块内部的类型。拥有一个public
的功能是没有意义的,但你需要提供一个私人类型来呼叫 - 怎么会有人打电话呢?
要么将使用过的类型设为公开,要么将该功能设为非公开。