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' @UIApplicationMain
attributo su un'implementazione UIApplicationDelegate
invece di un main.swift
file per contrassegnare il punto di ingresso. Cocoa usava un main.swift
file minimale che chiamava semplicemente NSApplicationMain
, ma a partire da Xcode 6.1 utilizza l' @NSApplicationMain
attributo su un'implementazione di NSApplicationDelegate
.
main.swift
trova nel gruppo File di supporto ed è semplicemente configurato per la chiamata NSApplicationMain
.
main.swift
.
Nel AppDelegate.swift
file puoi vedere @UIApplicationMain
.
L'AppDelegate è il file di ingresso iniziale.
Fondamentalmente: main.m
e AppDelegate.m
sono un po 'fusi in Swift
justAppDelegate.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 main
funzione, 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 Main
attributi, 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 @main
attributo 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.swift
file 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.swift
file da nessuna parte. Qual è la posizione di questo file?