Sollte ich meinen Swift-Klassennamen ein aus drei Buchstaben bestehendes Präfix geben, wie von Objective-C Conventions: Class Names Must Be Unique Across an Entire App empfohlen?Swift: Klassenpräfix benötigt?
Antwort
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 {
...
}
Wird dies übernommen, wenn Sie in objective c importieren? – Jeef
@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
Da Sie Klassennamen beim Export mit '@ objc' Tag auswählen, denke ich, dass Sie beides tun sollten, also wird in Swift' SimpleAlert' 'DRSimpleAlert' –
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
- 1. Warum benötigt Swift BooleanLiteralConvertible ein boolesches Literal?
- 2. Swift: Bedingte Umwandlungen werden nicht benötigt, aber "muss"?
- 3. CGPointErklärung benötigt?
- 4. Warum benötigt Swift das Überschreiben des designierten Initialisierers der generischen Superklasse?
- 5. Javascript Hilfe benötigt
- 6. URL Mapping Hilfe benötigt
- 7. Paypal IPN benötigt?
- 8. ob_flush benötigt lange Zeit
- 9. Action Script Beratung benötigt!
- 10. Java-Hilfe benötigt
- 11. Wo werden Edelsteine benötigt?
- 12. Datenbank benötigt Relation
- 13. benötigt Monitor.Wait Synchronisation?
- 14. RegEx ersetzen Hilfe benötigt
- 15. Warum wird NotificationCompat benötigt?
- 16. Scopeguard Lebensdauer/Muster benötigt
- 17. RoR Modell Beziehungsvorschlag benötigt
- 18. Sitzungsspeicher Hilfe benötigt
- 19. Benötigt ASP MVC3 Webmatrix?
- 20. .NET ORM Hilfe benötigt
- 21. C# Terminologie Hilfe benötigt
- 22. Warum benötigt RVM YAML?
- 23. Groovy Couchbase Hilfe benötigt
- 24. Insgesamt pro Tag benötigt
- 25. JAXB Projekt Hilfe benötigt
- 26. Matter.js berechnende Kraft benötigt
- 27. Libmbed.a benötigt von '.../freedomboard_servo.elf'
- 28. iphone Karten Hilfe benötigt
- 29. Liste Manipulationslogik Hilfe benötigt
- 30. Auf system.out, benötigt Klärung
Jetzt hat Apple auch der 'NS' Präfix für Klassen wie' NSNotificationCenter' wenn in Swift verwendet losgeworden. Allerdings behalten sie immer noch das Präfix für NSObject, weshalb wir hier alle so viel Spaß haben. –