2017-07-31 512 views
-1

我已经定义了以下类:方法不能被声明为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:)没有这样的错误如上所示。

为什么?如何摆脱那个错误?

+2

从@ @ escapting'删除't' – bobnoble

+0

这只是一个问题,而不是错误的原因。 –

+1

请粘贴*您的实际代码*,因为您显示的内容没有任何问题。 – Paulw11

回答

0

这是因为您的实际签名(我猜测的不是您粘贴的签名)使用的是文件或模块内部的类型。具有public的函数是没有意义的,但是您需要提供一个私有类型来调用 - 任何人都可以调用它?

既可以使用公开的类型,也可以使该功能非公开。

相关问题