方法不能被声明为public
问题描述:
我已经定义了以下类:方法不能被声明为public
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:)
没有这样的错误如上所示。
为什么?如何摆脱那个错误?
答
这是因为您的实际签名(我猜测的不是您粘贴的签名)使用的是文件或模块内部的类型。具有public
的函数是没有意义的,但是您需要提供一个私有类型来调用 - 任何人都可以调用它?
既可以使用公开的类型,也可以使该功能非公开。
从@ @ escapting'删除't' – bobnoble
这只是一个问题,而不是错误的原因。 –
请粘贴*您的实际代码*,因为您显示的内容没有任何问题。 – Paulw11