Não há main()
método no Swift. O programa deve iniciar a execução de algum lugar. Então, qual é o ponto de entrada da execução rápida de código e como isso é decidido?
fonte
Não há main()
método no Swift. O programa deve iniciar a execução de algum lugar. Então, qual é o ponto de entrada da execução rápida de código e como isso é decidido?
O ponto de entrada em um módulo Swift simples é o arquivo no módulo chamado main.swift
. main.swift
é o único arquivo que tem permissão para ter expressões e declarações no nível superior (todos os outros arquivos Swift no módulo podem conter apenas declarações).
Cocoa Touch usa o @UIApplicationMain
atributo em uma implementação de em UIApplicationDelegate
vez de um main.swift
arquivo para marcar o ponto de entrada. Cocoa costumava usar um main.swift
arquivo mínimo que simplesmente chamava NSApplicationMain
, mas a partir do Xcode 6.1 usa o @NSApplicationMain
atributo em uma implementação de NSApplicationDelegate
.
main.swift
arquivo em lugar nenhum. Qual é a localização deste arquivo?main.swift
estão no grupo Arquivos de Suporte e são simplesmente configurados para chamarNSApplicationMain
.main.swift
.No
AppDelegate.swift
arquivo você pode ver@UIApplicationMain
.O AppDelegate é o arquivo de entrada inicial.
Basicamente:
main.m
eAppDelegate.m
são meio que mescladosSwift
com apenasAppDelegate.swift
fonte
Cocoa-Touch
, minha resposta está certa.Você pode querer ler Arquivos e inicialização
fonte
Em aplicativos Swift, existem atributos:
@UIApplicationMain
(Cocoa Touch)@NSApplicationMain
(Cacau)que informam ao compilador rápido onde está o ponto de entrada do aplicativo.
O que o compilador Swift faz por baixo do capô é que ele cria uma
main
função, que basicamente se parece com os aplicativos Objective-C e trata esse método como o ponto de entrada do aplicativo (um primeiro método que é chamado quando o processo do aplicativo é iniciado).Se você quiser ler mais sobre o que o compilador swift faz com
Main
atributos, como o sistema operacional sabe onde está o ponto de entrada do aplicativo, eu o encorajo a ler este artigo: Entendendo o ponto de entrada do aplicativo iOSfonte
No Swift 5.3 há um novo
@main
atributo que permite controlar onde está o ponto de entrada no projeto, e não apenasmain.swift
. Só pode haver uma entrada principal e você não pode ter ummain.swift
arquivo e um atributo@main
. Consulte https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md para obter mais detalhes.fonte