ios - 如何在 Swift 中使用命名空间?

标签 ios macos swift

文档只提到嵌套类型,但不清楚它们是否可以用作命名空间。我没有发现任何明确提及命名空间的内容。

最佳答案

我会把 Swift 的命名空间描述为令人向往的;它被给予了很多与本地任何有意义的现实不符的广告。

例如,WWDC 视频指出,如果您导入的框架有一个 MyClass 类,而您的代码有一个 MyClass 类,那么这些名称不会冲突,因为“名称改编”给它们提供了不同的内部名称。然而,实际上,它们确实冲突,因为您自己的代码的 MyClass 获胜,并且您不能指定“不不,我的意思是框架中的 MyClass”——说 TheFramework .MyClass 不起作用(编译器知道你的意思,但它说它在框架中找不到这样的类)。

我的经验是,Swift 丝毫没有命名空间。在将我的一个应用程序从 Objective-C 转换为 Swift 时,我创建了一个嵌入式框架,因为它做起来既简单又酷。然而,导入框架会导入框架中的所有 Swift 内容——如此一来,又一次只有一个命名空间,而且它是全局的。而且没有 Swift header ,因此您无法隐藏任何名称。

编辑:在种子 3 中,此功能现在开始上线,在以下意义上:如果您的主要代码包含 MyClass 并且您的框架 MyFramework 包含 MyClass,则默认情况下前者会掩盖后者, 但您可以使用语法 MyFramework.MyClass 访问框架中的那个。因此,我们实际上已经有了不同命名空间的雏形!

编辑 2: 在种子 4 中,我们现在有了访问控制!另外,在我的一个应用程序中,我有一个嵌入式框架,果然,默认情况下所有内容都是隐藏的,我必须显式公开公共(public) API 的所有位。这是一个很大的改进。

关于ios - 如何在 Swift 中使用命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24002821/

相关文章:

iOS - 我们如何通过促销代码为应用内购买提供折扣?

ios - NSuserdefaults 应用程序组位置

c# - 新 iPhone 开发者的 MonoTouch 与 Objective-C

macos - 命令末尾\后面的多余字符

const 属性的 Swift inout 参数

ios - 辅助功能:在画外音模式下设置 slider.value 时,不会发布 UISlider 的 UIControlEventValueChanged

c++ - XCode:如何创建 .app 包并使用资源?

objective-c - cocoa:知道应用程序图标在 Dock 中的位置

arrays - 如何检查值是否介于存储在数组中的两个值之间

ios - 如何翻译 UIImagePickerController 预览?