如何在Swift中创建可导入的模块?

时间:2014-06-04 00:26:58

标签: swift module

我已阅读Apple的Swift文档,无法找到有关如何创建模块或如何将类或结构成员定义为私有或公共的信息。

语法中有对import语句的引用,但我找不到有关它的用途或如何使用它的信息。

有谁知道我在哪里找到这个?

5 个答案:

答案 0 :(得分:24)

在Swift,"模块"指框架。 Xcode现在有一个模板,用于为iOS和OS X创建框架项目。

目前无法声明方法或属性public / protected。如果您希望将其添加为功能,则可以在Apple's bug reporter上发出功能请求。还应该注意的是,Apple已声明该语言可能会随着Xcode的每个版本而发生变化,因此可能会在公开发布之前添加成员访问级别。

答案 1 :(得分:8)

另外,有一种方法可以自己制作模块,但这有点难度。

如果您查看xcrun swift -help,您可能会看到一些选项,-emit-module-emit-library-emit-object可能会有用,但是,可能,您应该更喜欢官方方式并通过框架分发模块。

如果您仍想自己制作模块,可以阅读this guide并附上一些解释

答案 2 :(得分:0)

<强>更新

您可以使用框架模块化swift项目。

我们通过为每个模块创建单独的框架项目进行模块化,并通过Xcode工作区链接它们。当我们将组件分成不同的项目时,它看起来更自然。它还确保模块之间只有单向通信。开发人员可以在不考虑其他模块的情况下进行隔离工作/测试。

默认情况下,框架内创建的类/结构/ etc将具有internal访问控制类型,因此它仅在模块中可见。为了使其在模块外部可见,您可以将其设为public

有关访问控制级别here

的更多信息

最新的Xcode 6测试版更新(测试版4)为快速访问带来了访问控制

  

Swift启用访问控制

     

Swift访问控制有三个访问级别:

     
      
  • 私有实体只能在定义它们的源文件中访问。
  •   
  • 内部实体可以在定义目标的任何位置访问。!
  •   
  • 公共实体可以从目标内的任何位置以及导入当前目标模块的任何其他上下文进行访问。
  •   

答案 3 :(得分:-2)

Apple提到私有方法尚未存在,但它们正在实施中。请记住,这是一种新生语言,它仍在积累中。

答案 4 :(得分:-3)

Swift 4.0

章节&#34;访问控制&#34;在Apple书&#34; The Swift Programming Language (Swift 4 Edition)&#34;

  

Swift为代码中的实体提供了五种不同的访问级别。这些访问级别与定义实体的源文件相关,也与源文件所属的模块相关。

     
      
  • open访问和public访问启用实体将在其定义模块的任何源文件中使用,也可以在另一个导入定义模块的模块的源文件中使用。在指定框架的公共接口时,通常使用开放或公共访问。 open和另一个导入定义模块的模块之间的区别。在指定框架的公共接口时,通常使用开放或公共访问。
  •   
  • internal访问允许实体在其定义模块的任何源文件中使用,但不能在该模块之外的任何源文件中使用。在定义应用程序或框架的内部结构时,通常使用内部访问。
  •   
  • fileprivate访问权限将实体的使用限制在其自己的定义源文件中。当在整个文件中使用这些详细信息时,使用文件专用访问来隐藏特定功能的实现细节。
  •   
  • private访问限制将实体用于封闭声明,以及同一文件中该声明的扩展。当这些细节仅在单个声明中使用时,使用私有访问来隐藏特定功能的实现细节。“
  •   
相关问题