2014-06-13 7 views

Antwort

61

Nein, you do not need class prefixes in Swift, weil die Klassen mit dem Namespaced in dem Modul angegeben sind, in dem sie leben.

Wenn Sie zwischen (zum Beispiel) ein Array von Swift und einer Array Klasse/Struktur, die Sie deklariert haben in Ihrer Anwendung eindeutig zu machen, können Sie dies tun, indem sie als Swift.Array oder MyProject.Array eingeben. Das funktioniert mit den Erweiterungen auch:

extension Swift.Array { 
    ... 
} 

extension MyProject.Array { 
    ... 
} 
+6

Wird dies übernommen, wenn Sie in objective c importieren? – Jeef

+1

@Jeef [Diese Stackoverflow-Antwort] (http://stackoverflow.com/a/26148391/2067021) scheint darauf hinzuweisen, dass Namenskollisionen auftreten können, wenn Klassen in Objective-C importiert werden. – user2067021

+1

Da Sie Klassennamen beim Export mit '@ objc' Tag auswählen, denke ich, dass Sie beides tun sollten, also wird in Swift' SimpleAlert' 'DRSimpleAlert' –

14

Nein, Präfix wird definitiv nicht neeeded.

Angenommen, Ihre App hat den Namen MyApp, und Sie müssen Ihre benutzerdefinierte UICollectionViewController deklarieren.

Sie brauchen nicht wie das Präfix und Unterklasse:

class MAUICollectionViewController: UICollectionViewController {} 

es wie folgt tun:

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

Warum?. Weil das, was Sie deklariert haben, in aktuelles Modul deklariert ist, das ist Ihr aktuelles Ziel. Und UICollectionViewController von UIKit ist in UIKit Modul deklariert.

Wie wird es im aktuellen Modul verwendet?

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

Wie sie von einem anderen Modul zu unterscheiden?

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