Swift 的标准库和名称冲突

2024-04-13

我知道 Swift 不使用命名空间,但名称是在每个模块中定义的。首先,我不太明白这是如何避免名称冲突的 - 请随意详细说明。

尽管如此,我的主要问题是:假设我想要一个不使用 NSTreeNode 的树结构,所以我创建了自己的类,名为“TreeNode”。现在假设 Apple 决定在 Swift 标准库中包含一个用于构建树的类,并且正如预期的那样,他们将其命名为“TreeNode”。然后会发生什么?我的自定义 TreeNode 将与标准库的 TreeNode 发生冲突...在这种情况下我是否必须更改所有代码?或者苹果会承诺Swift的标准库未来不会改变?

编辑:问题已回答here https://stackoverflow.com/a/24293236/3463265(感谢@Martin R 的评论)


Swift 中的命名空间是隐式的。所有类和其他符号都属于它们定义的目标(模块)。因此,如果您定义一个类String完全限定名称是MyTarget.String。当存在名称冲突时,您必须在类名前加上定义它的模块(框架)作为前缀,除非当前模块中定义了具有该名称的类 - 该类优先并且不需要前缀。

struct String {
    var swiftString = ""
}

var a = String()
var b = Swift.String()

所以如果你创建你的类TreeNode苹果后来添加了一个TreeNode同样,如果您仅使用一个模块并且不需要更改任何内容,则您的名字将优先。如果你想使用 SwiftTreeNode,您需要将其称为Swift.TreeNode.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 的标准库和名称冲突 的相关文章

  • Swift 错误:无法从 AST 上下文获取模块“My_App”

    我正在使用 Swift 3 Xcode 8 1 CocoaPods 1 1 1 运行后pod update 每次我尝试使用 Xcode 的 lldb 控制台时 它都会打印错误 例如 po self输出 共享 Swift 状态My App已出
  • 如何将 4 个字节转换为 Swift 浮点数?

    我正在用 Swift 编写一个 MsgPack 解析器作为学习该语言的一种方式 感觉不太适合这项任务 但我一直在进步 现在我遇到了一个块 我似乎无法说服它将 4 个字节转换为浮点数 var bytes Array
  • Swift 2 OAuth2 LinkedIn 连接

    我将使用 Swift 2 和 Xcode 7 制作一个本机 iOS 应用程序 用户应该使用 LinkedIn 和 OAuth 2 登录 但我想知道应该如何开始设置 我对 OAuth 2 没有太多经验 有好的教程或示例应用程序吗 我看到了雷
  • Swift - 必须由子类覆盖的类方法

    是否有一种标准方法可以在 Swift 中创建 纯虚函数 即 一个must被每个子类覆盖 如果不是 会导致编译时错误 您有两个选择 1 使用协议 将超类定义为协议而不是类 Pro 编译时检查每个 子类 不是实际的子类 是否实现了所需的方法 C
  • 在启用滚动的情况下扩展堆栈视图内的 UITextView

    我正在尝试使用自动布局和 Stackview 来实现一些目标 我有一个垂直 Stackview 其中包含 UIView UITextView 和 UIView 如下所示 我已经在这里查看了以前的答案 但找不到一个干净的解决方案来实现此目的
  • Xcode 6.4 Swift 单元测试无法编译:“GPUImage.h 未找到”“无法导入桥接标头”

    我的 Xcode 项目构建并运行良好 它有 Swift 和 Objective C 代码 它已安装 GPUImage 我向它添加了单元测试 现在它将不再编译 找不到 GPUImage h 文件 导入桥接标头失败 以下是我发现并尝试过的解决方
  • 从 AVAudioRecorder 获取分贝

    我正在尝试从 AVAudio 录音机获取分贝值 这是我目前的代码 我有一个启动录音机的方法 然后是一个读取分贝值的方法 var recorder AVAudioRecorder 全局定义的记录器 然后在此处使用 func init reco
  • 故事板 Segue 标识符命名约定

    我正在构建一个大型故事板 我想知道是否有人提出了有用的建议Segue 标识符的命名约定 看起来苹果只是在他们的示例中使用了 ShowX 其中 X 是它所显示的视图的名称 到目前为止 我更喜欢使用 PushX 或 ModalX 来跟踪它是哪种
  • 为什么字符串和对象的别名是小写的?

    以下是 C 中的别名列表 赞美C 中的 String 和 string 有什么区别 https stackoverflow com questions 7074 whats the difference between string and
  • 具有透明背景的 Swift 模态视图控制器 [重复]

    这个问题在这里已经有答案了 我知道这个话题很受欢迎 但我在编程语言中遇到了一些问题 事实是我仍然不明白我把代码放在哪里 好吧 我就来说说整个案子 我正在尝试制作一个与正常情况稍有不同的模态 Swift 通过单击按钮 ViewControll
  • 如何快速防止标签中出现孤儿?

    我有一个可以有一两行的标签 如果它有两行 我希望第二行至少有两个 或者可能三个 单词 而不仅仅是一个 关于如何使用 swift 实现这一点有什么想法吗 提前致谢 Daniel 编辑 我删除了我愚蠢的第一个想法 这些想法并没有真正的帮助 好吧
  • Node.js“需要”其他文件而不需要命名空间

    我正在将代码库从 100 浏览器端切换为浏览器端和服务器端的混合 我发现的问题是 要让我的代码使用 node js 运行 我必须使用模块 为了将我的代码变成模块 需要对几乎所有代码进行巨大的重构 原因是在浏览器上 许多功能是跨文件使用的 而
  • UIApplication.shared.delegate 相当于 SceneDelegate xcode11?

    我在 SceneDelegate 中定义了一个 let 属性 我希望一些 ViewController 能够在场景中访问它 在 UIKit 中 我可以像这样访问 App Delegate 属性 UIApplication shared de
  • 如何像谷歌日历一样将单元格的内容滚动到表格视图中的另一个单元格中?

    我希望用户界面像谷歌日历那样进入桌面视图 它在不同的行中显示相同的日期事件 但是当您向上或向下滚动时 左侧的日期也会向上向下滚动 Can you please help me how to achieve this Please take
  • 弱变量中间为零

    弱变量什么时候变为零 weak var backgroundNode SKSpriteNode texture SKTexture image initialBackgroundImage backgroundNode position C
  • 未捕获的 Kotlin 异常:kotlin.native.In CorrectDereferenceException:非法尝试访问非共享

    我尝试使用 Kotlin MPP Multiplatform 开发 Android 和 iOS 之间的共享库 但我面临着 iOS 中线程的问题 对于我在 iOS 中的应用程序 我在主线程中建立了对象 但它可能调用其他线程中的函数并抛出此异常
  • 在 Swift 中将动态 Int 变量从一个类传递到另一个类

    我是 swift 2 的新手 我陷入了将变量从一个类传递到另一个类的过程中 我有一个类 GameScene 我有一个公共变量score并且在更新功能中不断更新 我想发送score两个节点相互碰撞时的值 一旦它发生碰撞 我就会使用 mainv
  • ios Vision VNImageRequestHandler方向问题

    我正在尝试使用相机通过相机检测脸部VNImageRequestHandler iOS 愿景 当我在横向模式下用相机指向照片时 它会检测到面部 但方向模式相反 let detectFaceRequestHandler VNImageReque
  • 快速钥匙串更新只有在第二次尝试时才起作用

    您好 我在更新存储在钥匙串中的登录信息方面遇到了 iOS 钥匙串的一个非常奇怪的问题 因此 如果没有保存的凭据 则正确运行保存函数会保存登录信息 如果登录信息已存在并且用户更新了密码 则更新功能仅正确更新密码 但是 如果登录信息存在并且我尝
  • iOS 13 检查 CLLocationManager 的临时授权状态

    根据 WWDC 视频 https developer apple com videos play wwdc2019 705 https developer apple com videos play wwdc2019 705 当你要求 Al

随机推荐

  • 用值初始化数组(指针)[重复]

    这个问题在这里已经有答案了 所以 在 C 语言中 这完全有效 int myArray 1 2 3 为什么以下内容在访问元素时会出现运行时错误 int myArray2 1 2 3 myArray2 0 when myArray2 0 基本上
  • Firefox 中是否有与 Google Chrome 等效的allow-insecure-localhost 标志?

    我想使用不安全 自签名 证书连接 wss SSL ed websocket 但这会引发错误 此错误是由默认的 Firefox 设置引起的 该设置似乎不允许连接到自签名 ssl 以及 chrome 在 Chrome 中 这种行为可以通过以下方
  • 从代码中使用 XML 配置 log4net 或 NLog

    最近我一直在从事一个项目 除其他外 我们希望提供一个集中式配置系统 我们使用 WCF Silverlight C 等来创建分布式服务和客户端系统 我们想要配置的事情之一是日志记录 显然 我们可以通过 app config 或单独的日志配置文
  • 如何让应用程序支持三星的弹出视图? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我的应用程序的用户抱怨他无法在弹出窗口中打开应用程序 像这样 http www samsung com
  • 如何增加 Visual Studio 项目的内部版本号?

    为什么在 Visual Studio 中构建项目不会增加内部版本号 我在 AssemblyInfo cs 中有这个 assembly AssemblyVersion 1 5 这在 frmAbout 的构造函数中 Version versio
  • DataTable:如何隐藏分页并仅在需要时显示?

    我有 2 个使用 DataTable jQuery 插件的表 我想知道是否有办法隐藏表格右下角的分页 Note 仅在需要时才显示分页 当查询结果小于10条时隐藏分页 Use 绘制回调 https datatables net referen
  • 在facet_wrap中自动包装长窗格标题[重复]

    这个问题在这里已经有答案了 我想使用facet wrap 总结几列 我想给几个方面窗格起长标题 例如 set seed 123 df lt data frame a sample 0 1 20 replace T b sample 1 4
  • Net Core中DbContext需要MemoryCache或者Redis吗?

    我们在 SQL Server 数据库中有多个查找表 表格用于应用程序下拉菜单 地址类型 Home Business 产品类别 Books Food 电子产品 团队希望应用而不是不断读取数据库查找表MemoryCache or Redis C
  • 如何在 Laravel 中设置动态路由前缀?

    我需要创建一个具有多个区域设置的应用程序 每个路由都以区域设置为前缀 例如 xxx com en home xxx com fr home 问题是 我需要将区域设置字符串动态绑定到路由前缀 由于用户可以更改区域设置 因此区域设置字符串存储在
  • 在 Swift 中改变函数参数

    在 Swift 中 是否有可能在该函数的作用域内改变作为参数传递给函数的变量所指向的值 func exampleFunction value String index Int gt Bool value Changed Value Erro
  • Angular 4使用反应形式在数组内创建动态formArray

    在这里 我们在数组内动态创建数组 下面是预期结果的示例结构 optionsRadios null Package Title null HotelData Htitle HDescription hotelStar RoomData Hot
  • 通过 Excel VBA 发送带附件的电子邮件

    我想通过 Outlook 从 Excel 通过电子邮件发送报告 我正在使用我自己和同事的电子邮件地址对此进行测试 我收到 无法送达 的消息Error 该消息表示无法联系到收件人 并建议稍后尝试发送电子邮件 Sub CreateEmail D
  • 将 std::string 传递给函数 f(**char)

    是否可以将 std string 的指针传递给需要 char 的函数 该函数需要一个 char 才能向其写入值 目前我正在做以下事情 char s1 f s1 std string s2 s1 难道就没有更短的路吗 很明显 s2 c str
  • org.springframework.security.authentication.AuthenticationCredentialsNotFoundException:在SecurityContext中找不到身份验证对象

    我在以下环境中有一个网络应用程序 春季3 2 2 春季安全3 2 0 JPA 2 0 JSF 2 1 9 我已将以下与 Spring 安全相关的库添加到类路径中 spring security core 3 2 0 M1 jar sprin
  • 如何找到只安装了facebook应用的好友? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在 Facebook 上使用一个应用程序 我想找出仅包含在 Facebook 上安装相同应用程序的朋友的列表 而不是整个朋友列表 我正在
  • 嵌套字典理解python

    我无法理解 Python 3 中的嵌套字典推导式 我从下面的示例中得到的结果输出了正确的结构 没有错误 但只包含内部键 值对之一 我还没有找到像这样的嵌套字典理解的例子 谷歌搜索 嵌套字典理解 python 显示遗留示例 非嵌套理解或使用不
  • 如何长按主页、后退或最近使用的应用程序按钮打开我的 Android 应用程序?

    我希望我的用户能够通过长按后退按钮 最近使用的应用程序按钮或主页按钮来启动我的应用程序 或者甚至长按音量增大 减小或电源按钮 这将允许用户在不触摸屏幕图标的情况下执行我的应用程序 顺便说一句 我提供了与 Google Now 类似的语音解决
  • 将值从一个 jsp 页面传递到另一个 jsp 页面

    我正在将值从数据库检索到 jsp 中的表 到列 我想将该值插入到数据库中的另一个表中 为此 我使用另一个 jsp 表将该值插入到数据库中 并在之前的 jsp 页面表单操作选项卡中调用该 jsp 页面 I use request getPar
  • 时间:2019-03-14 标签:c++

    我正在编写一个 C 应用程序 我有一个类变量 多个线程正在写入该变量 在 C 中 任何可以在编译器 意识到 正在更改的情况下进行修改的内容都需要标记为易失性 对吧 因此 如果我的代码是多线程的 并且一个线程可能写入 var 而另一个线程从中
  • Swift 的标准库和名称冲突

    我知道 Swift 不使用命名空间 但名称是在每个模块中定义的 首先 我不太明白这是如何避免名称冲突的 请随意详细说明 尽管如此 我的主要问题是 假设我想要一个不使用 NSTreeNode 的树结构 所以我创建了自己的类 名为 TreeNo