考虑我有以下内容:
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所做的那样)
对于大多数项目来说,第二种选择应该是可行的;您将使用LIBAFoo
、LIBBFoo
,而不是Foo和Foo,但在实践中,使用更有意义的前缀,即CA→C矿石A矿化。