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

spr*_*ter 71 module swift

我已经阅读了Apple的Swift文档,并且没有找到关于如何创建模块或如何将类或结构成员定义为私有或公共的任何内容.

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

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

Aus*_*tin 25

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

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


Ale*_*sov 8

此外,有一种方法可以自己制作模块,但这有点难.

如果您将看到xcrun swift -help您可能会看到几个选项,并且有-emit-module,-emit-library并且-emit-object这可能是有用的,但是,也许,你应该通过框架喜欢正式的方式和分配模块.

如果您仍想自己创建模块,可以阅读本指南并附上一些说明


Cle*_*rem -3

更新

\n\n

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

\n\n

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

\n\n

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

\n\n

有关访问控制级别的更多信息请参见此处

\n\n
\n\n

最新的 Xcode 6 beta 更新(beta 4)为 swift 带来了访问控制

\n\n
\n

Swift 启用访问控制

\n\n

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

\n\n
    \n
  • 私人的实体只能从定义它们的源文件中访问。
  • \n
  • 内部的实体可以在定义它们的目标内的任何地方访问。
  • \n
  • 民众可以从目标内的任何位置以及导入当前 target\xe2\x80\x99s 模块的任何其他上下文访问
  • \n
\n
\n

  • 这个答案如何帮助人们在 Swift 中创建可导入的模块? (33认同)