在Swift中避免类型名称冲突

问题描述

我正在用Swift编写一个静态库,该库将在多个项目中重用。问题是我使用的类和结构名很常见,并且很容易与其他库/框架冲突。我看不到任何在Swift中创建自己的名称空间的明显方法。避免多个库/框架中的类之间的名称冲突的最佳方法是什么?

解决方法

您不必回避。只需使用您喜欢的名称即可。然后,当您要访问类/结构/协议...时,只需将模块名称用作名称空间即可。

示例:

import MyModule

let a: MyModule.Result // the Result type defined inside the `MyModule`
let b: Result // Swift's Result type
,

正如其他人所说,如果发生冲突,您始终可以将符号名与模块名完全限定(请参见Cong的回答。)

Apple在Objective-C时代解决此问题的建议方法是使用您的初始值或公司的缩写作为符号名称的前缀。我不赞成这样做,因为它创建的丑陋名称掩盖了其潜在含义。

使用模块名称/框架名称的缩写版本会更好一些,例如,Apple倾向于这样做。 UIKit视图是UIView,AFNetworking的连接对象可能是AFNConnection

其他人在评论中强烈主张不再需要并且不再建议这样做。 (就像我说的那样,我从来都不喜欢它。)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...