Risposte:
Il punto di ingresso in un semplice modulo Swift è il file nel modulo chiamato main.swift. main.swiftè l'unico file a cui è consentito avere espressioni e istruzioni al livello superiore (tutti gli altri file Swift nel modulo possono contenere solo dichiarazioni).
Cocoa Touch utilizza l' @UIApplicationMainattributo su un'implementazione UIApplicationDelegateinvece di un main.swiftfile per contrassegnare il punto di ingresso. Cocoa usava un main.swiftfile minimale che chiamava semplicemente NSApplicationMain, ma a partire da Xcode 6.1 utilizza l' @NSApplicationMainattributo su un'implementazione di NSApplicationDelegate.
main.swifttrova nel gruppo File di supporto ed è semplicemente configurato per la chiamata NSApplicationMain.
main.swift.
Nel AppDelegate.swiftfile puoi vedere @UIApplicationMain.
L'AppDelegate è il file di ingresso iniziale.
Fondamentalmente: main.me AppDelegate.msono un po 'fusi in SwiftjustAppDelegate.swift
Potresti voler leggere File e inizializzazione
L'eccezione è un file speciale denominato "main.swift", che si comporta in modo molto simile a un file playground, ma è costruito con il codice sorgente della tua app. Il file "main.swift" può contenere codice di primo livello e si applicano anche le regole dipendenti dall'ordine. In effetti, la prima riga di codice da eseguire in "main.swift" è implicitamente definita come il punto di ingresso principale del programma. Ciò consente al programma Swift minimo di essere una singola riga, purché tale riga sia in "main.swift".
In Xcode, i modelli Mac includono per impostazione predefinita un file "main.swift", ma per le app iOS l'impostazione predefinita per i nuovi modelli di progetto iOS consiste nell'aggiungere @UIApplicationMain a un normale file Swift. Ciò fa sì che il compilatore sintetizzi un punto di ingresso principale per la tua app iOS ed elimina la necessità di un file "main.swift".
In alternativa, è possibile collegare un'implementazione di main scritta in Objective-C, comune quando si migrano in modo incrementale i progetti da Objective-C a Swift.
Nelle app Swift ci sono attributi:
@UIApplicationMain (Cocoa Touch)@NSApplicationMain (Cacao)che dicono al compilatore rapido dov'è il punto di ingresso dell'applicazione.
Ciò che il compilatore rapido fa sotto il cofano è che crea una mainfunzione, che fondamentalmente ha lo stesso aspetto delle app Objective-C e tratta questo metodo come punto di ingresso dell'app (un primo metodo che viene chiamato quando viene avviato il processo dell'applicazione).
Se vuoi saperne di più su cosa fa il compilatore rapido con gli Mainattributi, su come il sistema operativo sa dove si trova il punto di ingresso dell'applicazione, ti incoraggio a leggere questo articolo: Comprensione del punto di ingresso dell'app iOS
In Swift 5.3 c'è un nuovo @mainattributo che ti consente di controllare dove si trova il tuo punto di ingresso nel tuo progetto piuttosto che solo main.swift. Può esserci solo una voce principale e non puoi avere un main.swiftfile e un attributo @main. Vedi https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md per maggiori dettagli.
@main
struct App {
static func main() {
print("Starting.")
}
}
main.swiftfile da nessuna parte. Qual è la posizione di questo file?