如何针对命名空间冲突强制执行编译器警告或错误



考虑我有以下内容:

  • FrameworkA,定义类Foo
  • FrameworkB,它还定义了类Foo
  • FrameworkA中导入FrameworkB的文件

在不使用命名空间限定符的情况下,如何让Xcode在任何引用Foo的行上生成警告或错误?

例如:

let a = FrameworkA.Foo() // fine, no warning or error
let b = FrameworkB.Foo() // fine, no warning or error
let c = Foo()            // at a minimum, a warning

我完全理解,如果我们在FrameworkA中,那么第三个示例等效于FrameworkA.Foo(),但我希望Xcode生成警告或错误。

假设Foo类在FrameworkB中已经存在很长一段时间,并且有问题的代码行一直打算指向FrameworkB中定义的Foo类,但在将来的某个时间点,由于某种原因,有人将Foo类添加到FrameworkA中。这将更改文件中行的行为。

我希望Xcode在使用导入到文件中的多个框架中定义的东西时,在没有显式声明命名空间的情况下,生成编译时警告或错误。

有办法吗?

不幸的是,我认为Xcode在这一点上不支持这一点-一些成果较少的解决方案:

  • 打开一个雷达任务,希望苹果能修复它
  • 给你的类加前缀(就像我们过去对Obj-C所做的那样)

对于大多数项目来说,第二种选择应该是可行的;您将使用LIBAFooLIBBFoo,而不是Foo和Foo,但在实践中,使用更有意义的前缀,即CAC矿石A矿化。

最新更新