Как я могу применить предупреждение или ошибку компилятора для конфликтов пространства имен?
У меня есть следующее:
-
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
в течение длительного времени, и строка кода, о которой идет речь, всегда указывала на класс Foo
, определенный в FrameworkB
, но в некоторых более поздних версиях в будущем, кто-то добавил класс Foo
в FrameworkA
по какой-то причине. Это изменит поведение строки в файле.
Я бы хотел, чтобы Xcode генерировал предупреждения или ошибки времени компиляции в любое время, когда что-то определенное в нескольких фреймворках, импортированных в файл, используется без явного объявления пространства имен.
Есть ли способ?
Ответы
Ответ 1
Я не думаю, что в этот момент Xcode поддерживает это, к сожалению, - несколько менее плодотворных решений:
- Откройте радарную задачу и надейтесь, что Apple ее исправит.
- Префикс ваших классов (как мы привыкли делать с Obj-C)
Второй вариант должен быть жизнеспособным для большинства проектов; вместо Foo и Foo у вас будет LIBAFoo
, LIBBFoo
, но на практике с более значимыми префиксами, т.е. CA → C ore A nimation.