我已经通读了Apple的Swift文档,却找不到关于如何创建模块或如何将类或结构成员定义为私有或公共成员的信息。
语法中有对import语句的引用,但是找不到有关它做什么或如何使用的信息。
有人知道我在哪里可以找到这个吗?
我已经通读了Apple的Swift文档,却找不到关于如何创建模块或如何将类或结构成员定义为私有或公共成员的信息。
语法中有对import语句的引用,但是找不到有关它做什么或如何使用的信息。
有人知道我在哪里可以找到这个吗?
Answers:
更新资料
您可以使用框架对快速项目进行模块化。
我们通过为每个模块创建单独的框架项目并通过Xcode工作区将它们链接来实现模块化。当我们将组件分为不同的项目时,它看起来更加自然,并且还确保了模块之间只有单向通信。开发人员可以在隔离上进行工作/测试,而无需考虑其他模块。
默认情况下,在框架内创建的类/结构/等将具有internal
访问控制类型,因此仅在模块内可见。为了使其在模块外部可见,您可以使其public
。
有关访问控制级别的更多信息,请点击此处
最新的Xcode 6 beta更新(beta 4)使访问控制迅捷
Swift启用访问控制
Swift访问控制具有三个访问级别:
- 私有实体只能在定义它们的源文件中访问。
- 内部实体可以在定义它们的目标内的任何地方访问。
- 可以从目标内的任何位置以及导入当前目标模块的任何其他上下文中访问公共实体。
在Swift中,“模块”是指框架。Xcode现在具有用于为iOS和OS X创建框架项目的模板。
当前尚无方法声明公共/受保护的方法或属性。如果您希望将此功能添加为功能,可以在Apple的错误报告程序上提出功能请求。还应注意,Apple已声明该语言可能随Xcode的每个发行版而更改,因此有可能在公开发行版之前添加成员访问级别。
另外,有一种方法可以自己制作模块,但是要困难一些。
如果您看一下,xcrun swift -help
可能会看到一些选择,并且有-emit-module
,-emit-library
并且-emit-object
可能有用,但是,也许,您应该更喜欢官方方式并通过Framework分发模块。
如果您仍然想自己制作模块,则可以阅读本指南并附上一些说明
swiftmodule
使用--sdk iphoneos
。
.swiftmodule
二进制文件– github.com/jankuca/swm
迅捷4.0
Apple书“ Swift编程语言(Swift 4版) ”中“访问控制”一章的描述
Swift为代码中的实体提供了五种不同的访问级别。这些访问级别与定义实体的源文件有关,也与源文件所属的模块有关。
open
访问和public
访问使实体可以在其定义模块的任何源文件中使用,也可以在导入定义模块的另一个模块的源文件中使用。指定框架的公共接口时,通常使用开放或公共访问权限。open与导入定义模块的另一个模块之间的区别。指定框架的公共接口时,通常使用开放或公共访问权限。internal
访问使实体可以在其定义模块的任何源文件中使用,但不能在该模块外部的任何源文件中使用。在定义应用程序或框架的内部结构时,通常使用内部访问。fileprivate
访问将实体的使用限制为自己定义的源文件。当在整个文件中使用特定功能的实现细节时,使用文件专用访问权限可以隐藏这些细节。private
访问将实体的使用限制为封闭的声明以及该声明在同一文件中的扩展名。仅在单个声明中使用这些细节时,使用私有访问权限可以隐藏特定功能的实现细节。”