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

时间:2015-04-26 14:52:02

标签: xcode swift frameworks namespaces

考虑我有以下内容:

  • 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生成警告或错误。

考虑FooFrameworkB类已存在很长时间的情况,并且相关代码行始终指向Foo中定义的类FrameworkB 1}},但是在将来某个时候,由于某种原因,有人将Foo添加到FrameworkA。这会改变文件中行的行为。

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

有办法吗?

1 个答案:

答案 0 :(得分:2)

我不认为Xcode在这一点上支持这一点 - 一些不太富有成效的解决方案:

  • 打开radar task,希望Apple修复它。
  • 为您的课程添加前缀(与我们以前的Obj-C相同)

对于大多数项目,第二种选择应该是可行的;而不是Foo和Foo,你将拥有LIBAFooLIBBFoo,但在实践中,有更有意义的前缀,即 CA C A nimation。