Antworten:
Der Einstiegspunkt in ein einfaches Swift-Modul ist die Datei im aufgerufenen Modul main.swift
. main.swift
ist 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 @UIApplicationMain
Attribut für eine Implementierung von UIApplicationDelegate
anstelle einer main.swift
Datei, um den Einstiegspunkt zu markieren. Cocoa verwendete früher eine minimale main.swift
Datei, die einfach aufgerufen wurde NSApplicationMain
, aber ab Xcode 6.1 wird das @NSApplicationMain
Attribut für eine Implementierung von verwendet NSApplicationDelegate
.
main.swift
in der Gruppe " Unterstützende Dateien " und werden einfach zum Aufrufen konfiguriert NSApplicationMain
.
main.swift
.
In der AppDelegate.swift
Datei können Sie sehen @UIApplicationMain
.
Das AppDelegate ist die erste Eingabedatei.
Grundsätzlich: main.m
und AppDelegate.m
sind irgendwie Swift
zu 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 Main
Attributen 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 @main
Attribut, 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.swift
Datei 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.swift
kann nirgendwo eine Datei finden. Wo befindet sich diese Datei?