2014-06-13 10 views

risposta

61

No, you do not need class prefixes in Swift, perché le classi sono assegnate ai nomi del modulo in cui vivono.

Se è necessario disambiguare tra (per esempio) un Array da Swift e un Array classe/struttura che avete dichiarato nella vostra applicazione, è possibile farlo digitando come Swift.Array o un MyProject.Array. Che funziona con le estensioni così:

extension Swift.Array { 
    ... 
} 

extension MyProject.Array { 
    ... 
} 
+6

Riporta questo se si importa nell'obiettivo c? – Jeef

+1

@Jeef [Questa risposta StackOverflow] (http://stackoverflow.com/a/26148391/2067021) sembra indicare che possono esserci conflitti di denominazione quando le classi vengono importate in Objective-C. – user2067021

+1

Dato che si scelgono i nomi delle classi all'esportazione con il tag '@ objc', penso che dovresti fare entrambi, quindi in Swift' SimpleAlert' diventa 'DRSimpleAlert' –

14

No, il prefisso non è sicuramente neeeded.

Supponiamo che l'app abbia il nome e che sia necessario dichiarare il numero personalizzato UICollectionViewController.

È non è necessario come prefisso e sottoclasse in questo modo:

class MAUICollectionViewController: UICollectionViewController {} 

fare in questo modo:

class UICollectionViewController {} //no error "invalid redeclaration o..." 

Perché?. Perché ciò che hai dichiarato viene dichiarato in modulo corrente, che è il tuo attuale target. E UICollectionViewController da UIKit è dichiarato nel modulo UIKit.

Come si utilizza nel modulo corrente?

var customController = UICollectionViewController() //your custom class 
var uikitController = UIKit.UICollectionViewController() //class from UIKit 

Come distinguerli da un altro modulo?

var customController = MyApp.UICollectionViewController() //your custom class 
var uikitController = UIKit.UICollectionViewController() //class from UIKit 
Problemi correlati