Considerate Ho il seguente:Come posso applicare un avvertimento o un errore del compilatore per i conflitti nello spazio dei nomi?
FrameworkA
, che definisce classeFoo
FrameworkB
, che definisce anche classeFoo
- Un file in
FrameworkA
che importaFrameworkB
Come posso ottenere Xcode per generare un avviso o un errore su qualsiasi linea che faccia riferimento a Foo
senza usare il qualificatore namespace?
Ad esempio:
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
Capisco perfettamente che se siamo in FrameworkA
, poi il terzo esempio è equivalente a FrameworkA.Foo()
, ma vorrei per Xcode per generare un avviso o errore.
Si consideri lo scenario quando la classe Foo
è esistita in FrameworkB
per lungo tempo, e la linea di codice in questione ha sempre inteso puntare alla classe Foo
definita nel FrameworkB
, ma ad un certo punto più avanti nel futuro, qualcuno ha aggiunto classe Foo
in FrameworkA
per qualche motivo. Questo cambierebbe il comportamento della linea nel file.
Vorrei che Xcode generasse avvisi o errori in fase di compilazione ogni volta che viene utilizzato qualcosa definito in più quadri importati in un file senza che lo spazio dei nomi sia esplicitamente dichiarato.
C'è un modo?
Questo tipo di mosche si trova direttamente di fronte a tutti i post intorno a Stack Overflow, suggerendo che non è necessario aggiungere il prefisso alle classi perché abbiamo spazi dei nomi. – nhgrif
Per essere onesti, ho utilizzato entrambi gli approcci nei miei progetti Swift, e fino ad ora, sono ancora un fan dell'uso dei prefissi; ti dà un ulteriore suggerimento mentale su dove il codice appartiene e ti aiuta insieme all'estrazione e al disaccoppiamento del codice. Detto questo, Xcode dovrebbe sicuramente avere qualche avvertimento qui; Ricordo che, se lo fai in Java, il compilatore si lamenterebbe di uno spazio dei nomi ambiguo. – Zorayr