我已经阅读过苹果关于Swift的文档,但无法找到如何创建模块或将类或结构成员定义为私有或公共的信息。
在语法中有关于import语句的引用,但我找不到关于它的作用或如何使用它的信息。
是否有人知道在哪里可以找到这些信息?
我已经阅读过苹果关于Swift的文档,但无法找到如何创建模块或将类或结构成员定义为私有或公共的信息。
在语法中有关于import语句的引用,但我找不到关于它的作用或如何使用它的信息。
是否有人知道在哪里可以找到这些信息?
在Swift中,“模块”指的是框架。现在,Xcode有一个模板可以为iOS和OS X创建框架项目。
目前还没有办法声明方法或属性为public / protected。如果您想将其添加为功能,请在Apple的错误报告者上提出请求。应注意,苹果已经表示语言可能会在每个Xcode版本发布时更改,因此成员访问级别在公开发布之前可能会被添加。
同时,你也可以自己制作一个模块,但这是一种更加困难的方法。
如果你查看xcrun swift -help
,你会看到几个选项,其中有-emit-module
、-emit-library
和-emit-object
这些可能有用的选项,但是,最好还是采用官方方式通过框架来分发模块。
如果你仍然想要自己制作模块,你可以阅读这篇指南,里面有一些解释。
swiftmodule
,但这很奇怪。 - vladof81.swiftmodule
二进制文件 - http://github.com/jankuca/swm - J. K.苹果提到私有方法目前还不存在,但正在实现中。请记住,这是一种新生语言,仍在不断完善中。
更新
你可以使用框架来模块化 Swift 项目。
我们通过为每个模块创建单独的框架项目,并通过 Xcode 工作区将它们链接起来来进行模块化。将组件分成不同的项目看起来更自然,也确保模块之间只有单向通信。开发人员可以在隔离的环境中工作/测试,而不必过多考虑其他模块。
默认情况下,在框架内创建的类/结构等将具有 internal
访问控制类型,因此仅在模块内可见。为了使其在模块外可见,您可以将其设置为 public
。
有关访问控制级别的更多信息,请参见 这里。
最新的Xcode 6 beta更新(beta 4)为Swift带来了访问控制
Swift启用访问控制
Swift访问控制有三个访问级别:
- private实体只能从定义它们的源文件中访问。
- internal实体可以在定义它们的目标内的任何地方访问。
- public实体可以从目标内的任何地方以及从导入当前目标模块的任何其他上下文中访问。
Swift 4.0
来自苹果书籍 "The Swift Programming Language (Swift 4 Edition)" 章节 "访问控制" 的描述
Swift 提供了五种不同的访问级别来管理代码中的实体。这些访问级别是相对于定义实体的源文件以及该源文件所属的模块而言的。open
访问和 public
访问使得实体可以在定义它们的模块内的任何源文件中使用,也可以在导入定义模块的另一个模块的源文件中使用。通常在指定框架的公共接口时使用 open 或 public 访问。open 和 public 访问之间的区别在于,open 访问还允许其他模块继承和重写实体。
internal
访问使得实体可以在定义它们的模块内的任何源文件中使用,但不能在该模块外的任何源文件中使用。通常在定义应用程序或框架的内部结构时使用 internal 访问。
fileprivate
访问将实体的使用限制在其自己定义的源文件中。当某个功能的实现细节在整个文件中都被使用时,可以使用 file-private 访问来隐藏这些细节。
private
访问将实体的使用限制在封闭声明及其在同一文件中的扩展中。当某个功能的实现细节仅在单个声明中使用时,可以使用 private 访问来隐藏这些细节。