Il n'y a pas de main()
méthode dans Swift. Le programme doit démarrer l'exécution de quelque part. Alors, quel est le point d'entrée de l'exécution du code Swift et comment est-il décidé?
la source
Il n'y a pas de main()
méthode dans Swift. Le programme doit démarrer l'exécution de quelque part. Alors, quel est le point d'entrée de l'exécution du code Swift et comment est-il décidé?
Le point d'entrée dans un module Swift simple est le fichier dans le module appelé main.swift
. main.swift
est le seul fichier autorisé à avoir des expressions et des instructions au niveau supérieur (tous les autres fichiers Swift du module ne peuvent contenir que des déclarations).
Cocoa Touch utilise l' @UIApplicationMain
attribut sur une implémentation de UIApplicationDelegate
au lieu d'un main.swift
fichier pour marquer le point d'entrée. Cocoa utilisait un main.swift
fichier minimal qui appelait simplement NSApplicationMain
, mais à partir de Xcode 6.1 utilise l' @NSApplicationMain
attribut sur une implémentation de NSApplicationDelegate
.
main.swift
fichier nulle part. Quel est l'emplacement de ce fichier?main.swift
trouve dans le groupe Fichiers de prise en charge et est simplement configuré pour appelerNSApplicationMain
.main.swift
.Dans le
AppDelegate.swift
fichier, vous pouvez voir@UIApplicationMain
.L'AppDelegate est le fichier d'entrée initial.
En gros:
main.m
etAppDelegate.m
sont un peu fusionné dansSwift
justeAppDelegate.swift
la source
Cocoa-Touch
, ma réponse est juste.Vous voudrez peut-être lire les fichiers et l'initialisation
la source
Dans les applications Swift, il existe des attributs:
@UIApplicationMain
(Touche de cacao)@NSApplicationMain
(Cacao)qui indiquent au compilateur Swift où est le point d'entrée de l'application.
Ce que le compilateur rapide fait sous le capot, c'est qu'il crée une
main
fonction, qui ressemble fondamentalement à celle des applications Objective-C et traite cette méthode comme le point d'entrée de l'application (une première méthode appelée lorsque le processus d'application est démarré).Si vous souhaitez en savoir plus sur ce que fait le compilateur rapide avec les
Main
attributs, comment le système d'exploitation sait où se trouve le point d'entrée de l'application, je vous encourage à lire cet article: Comprendre le point d'entrée de l'application iOSla source
Dans Swift 5.3, il existe un nouvel
@main
attribut qui vous permet de contrôler où se trouve votre point d'entrée dans votre projet plutôt que simplementmain.swift
. Il ne peut y avoir qu'une seule entrée principale et vous ne pouvez pas avoir demain.swift
fichier et un attribut@main
. Voir https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md pour plus de détails.la source