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