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

nhg*_*rif 14 xcode frameworks namespaces swift

考虑一下我有以下几点:

  • FrameworkA,它定义了类 Foo
  • FrameworkB,这也定义了类 Foo
  • FrameworkA导入的文件FrameworkB

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

例如:

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
Run Code Online (Sandbox Code Playgroud)

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

考虑方案时,类Foo已经存在在FrameworkB很长一段时间,有问题的代码行一直打算在类点Foo的定义FrameworkB,但在未来的某个点后,有人添加类FooFrameworkA出于某种原因.这将改变文件中行的行为.

我希望Xcode在使用导入文件的多个框架中定义的内容时生成编译时警告或错误,而不显式声明名称空间.

有办法吗?

Zor*_*ayr 2

不幸的是,我认为目前 Xcode 不支持这一点 - 一些不太有效的解决方案:

\n\n
    \n
  • 开启雷达任务,希望苹果修复。
  • \n
  • 为你的类添加前缀(就像我们以前对 Obj-C 所做的那样)
  • \n
\n\n

第二种选择对于大多数项目来说应该是可行的;LIBAFoo您将使用,代替 Foo 和 Foo,LIBBFoo但实际上,具有更有意义的前缀,即CA \xe2\x86\x92 C ore A动画。

\n