Antworten:
Der Einstiegspunkt in ein einfaches Swift-Modul ist die Datei im aufgerufenen Modul main.swift. main.swiftist die einzige Datei, die Ausdrücke und Anweisungen auf der obersten Ebene enthalten darf (alle anderen Swift-Dateien im Modul können nur Deklarationen enthalten).
Cocoa Touch verwendet das @UIApplicationMainAttribut für eine Implementierung von UIApplicationDelegateanstelle einer main.swiftDatei, um den Einstiegspunkt zu markieren. Cocoa verwendete früher eine minimale main.swiftDatei, die einfach aufgerufen wurde NSApplicationMain, aber ab Xcode 6.1 wird das @NSApplicationMainAttribut für eine Implementierung von verwendet NSApplicationDelegate.
main.swiftin der Gruppe " Unterstützende Dateien " und werden einfach zum Aufrufen konfiguriert NSApplicationMain.
main.swift.
In der AppDelegate.swiftDatei können Sie sehen @UIApplicationMain.
Das AppDelegate ist die erste Eingabedatei.
Grundsätzlich: main.mund AppDelegate.msind irgendwie Swiftzu nur verschmolzenAppDelegate.swift
Möglicherweise möchten Sie Dateien und Initialisierung lesen
Die Ausnahme ist eine spezielle Datei mit dem Namen "main.swift", die sich ähnlich wie eine Spielplatzdatei verhält, jedoch mit dem Quellcode Ihrer App erstellt wird. Die Datei "main.swift" kann Code der obersten Ebene enthalten, und die auftragsabhängigen Regeln gelten ebenfalls. Tatsächlich wird die erste Codezeile, die in „main.swift“ ausgeführt wird, implizit als Haupteinstiegspunkt für das Programm definiert. Dadurch kann das minimale Swift-Programm eine einzelne Zeile sein - solange sich diese Zeile in „main.swift“ befindet.
In Xcode enthalten Mac-Vorlagen standardmäßig eine Datei "main.swift". Bei iOS-Apps wird bei neuen iOS-Projektvorlagen standardmäßig @UIApplicationMain zu einer regulären Swift-Datei hinzugefügt. Dies veranlasst den Compiler, einen Haupteinstiegspunkt für Ihre iOS-App zu synthetisieren, und macht die Datei "main.swift" überflüssig.
Alternativ können Sie eine in Objective-C geschriebene Implementierung von main verknüpfen, die bei der schrittweisen Migration von Projekten von Objective-C nach Swift üblich ist.
In Swift-Apps gibt es Attribute:
@UIApplicationMain (Cocoa Touch)@NSApplicationMain (Kakao)das teilt dem schnellen Compiler mit, wo sich der Einstiegspunkt der Anwendung befindet.
Was der schnelle Compiler unter der Haube macht, ist, dass er eine erstellt main Funktion erstellt, die im Grunde genommen genauso aussieht wie in Objective-C-Apps und diese Methode als Einstiegspunkt der App behandelt (eine erste Methode, die beim Starten des Anwendungsprozesses aufgerufen wird).
Wenn Sie mehr darüber erfahren möchten, was der schnelle Compiler mit MainAttributen macht und wie das Betriebssystem weiß, wo sich der Einstiegspunkt der Anwendung befindet, empfehlen wir Ihnen, diesen Artikel zu lesen: Grundlegendes zum Einstiegspunkt für iOS- Apps
In Swift 5.3 gibt es ein neues @mainAttribut, mit dem Sie steuern können, wo sich Ihr Einstiegspunkt in Ihrem Projekt befindet und nicht nur main.swift. Es kann nur einen Haupteintrag geben und Sie können keine main.swiftDatei und kein Attribut haben @main. Weitere Informationen finden Sie unter https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md .
@main
struct App {
static func main() {
print("Starting.")
}
}
main.swiftkann nirgendwo eine Datei finden. Wo befindet sich diese Datei?