Swift 无法声明方法,内部类型为

Swift 无法声明方法,内部类型为,swift,swift3,Swift,Swift3,我这里有一个委托,我得到以下错误: '方法无法声明为公共,因为其参数使用内部类型' 这是代码 public protocol CaptureViewControllerDelegate: class { /** Called when the `controller` captures an image. */ // "error is here" func captureViewController(_ controller: ViewController,

我这里有一个委托,我得到以下错误:

'方法无法声明为公共,因为其参数使用内部类型'

这是代码

public protocol CaptureViewControllerDelegate: class {
    /**
     Called when the `controller` captures an image.
     */
    // "error is here" func captureViewController(_ controller: ViewController, didCaptureStillImage image: UIImage?)
}

由于您的协议是
public
,因此
ViewController
的访问级别必须与
public
的访问级别具有相同的限制性或更少的限制性

由于Swift中没有比
public
open
更具限制性或更少限制性的内容,因此
ViewController
的访问级别必须声明为
public
open

我建议大家看看苹果的Swift访问控制文档。除了不同的访问级别外,文档还解释了
public
open
之间的区别(open的限制性比public小)


ViewController是公共的吗?或者你想改用
UIViewController
吗?感谢这个有用的答案,我遇到了类似的问题(与这个问题不完全匹配,但你的答案帮助我解决了我的问题,解决了这个错误)“方法不能声明为公共的,因为它的参数使用了一个内部类型,这就是答案!!非常感谢!