从 Xcode 8 beta 6 开始,我现在在其定义模块之外收到编译错误“无法从非开放类(类)继承”
我继承的类是一个单独的 Swift 框架的一部分,但我的项目是为 Xcode 8 beta 5 编译的。我需要更改什么才能让我的项目再次编译?
从 Xcode 8 beta 6 开始,我现在在其定义模块之外收到编译错误“无法从非开放类(类)继承”
我继承的类是一个单独的 Swift 框架的一部分,但我的项目是为 Xcode 8 beta 5 编译的。我需要更改什么才能让我的项目再次编译?
您继承的类需要定义为open
而不是public
.
更多关于 Swift 3 中访问控制更改的上下文:
Swift 2 只有 3 个访问级别:
private
:实体仅在定义它们的源文件中可用。internal
:实体可用于包含定义的整个模块。public
: 实体旨在用作 API,并且可以由任何导入模块的文件访问。Swift 3 增加了 2 个访问级别 ( open
and fileprivate
) 并改变了private
:
private
: 符号仅在当前声明中可见。fileprivate
: 在当前文件中可见的符号。internal
: 在当前模块或默认访问修饰符中可见的符号。public
: 在当前模块外可见的符号。open
: 用于在当前模块之外子类化或覆盖类或函数。