2017-07-31 94 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的函數是沒有意義的,但是您需要提供一個私有類型來調用 - 任何人都可以調用它?

既可以使用公開的類型,也可以使該功能非公開。

相關問題