我已阅读Apple提供的文件,https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html
在这里,它解释了:
具有公共访问权限的类或任何更具限制性的访问级别, 只能在定义它们的模块中进行子类化。
内部访问允许实体在其定义模块的任何源文件中使用,但不能在任何源文件中使用 模块。您通常在定义应用程序或a时使用内部访问权限 框架的内部结构。
开放类可以在定义它们的模块中进行子类化,也可以在任何导入模块的模块中进行子类化。 定义
我没有找到公开和内部访问权限之间的确切区别。
我的研究也包括http://www.globalnerdy.com/2014/07/23/a-first-look-at-swifts-new-access-levels/。但是根据swift3.3文档,它还不清楚。
答案 0 :(得分:2)
Swift的访问控制模型基于modules
和source files.
模块是一个代码分发单元 - 一个框架或应用程序,它作为一个单元构建和发布,可以由另一个模块使用Swift的import
关键字导入。
例如,一些流行的模块:Alamofire,SwiftyJson,RxSwift ......
您要导入项目的这些模块。使用internal access level
的所有类只能在这些库/模块中使用。您不能直接在代码中使用它们。
但如果课程为public
- 您可以直接在资源中使用它。