Odpowiedzi:
Punktem wejścia w zwykłym module Swift jest plik w module o nazwie main.swift
. main.swift
jest jedynym plikiem, który może mieć wyrażenia i instrukcje na najwyższym poziomie (wszystkie inne pliki Swift w module mogą zawierać tylko deklaracje).
Cocoa Touch używa @UIApplicationMain
atrybutu w implementacji UIApplicationDelegate
zamiast main.swift
pliku, aby oznaczyć punkt wejścia. Cocoa używała minimalnego main.swift
pliku, który był po prostu wywoływany NSApplicationMain
, ale od Xcode 6.1 używa @NSApplicationMain
atrybutu w implementacji NSApplicationDelegate
.
main.swift
znajduje się w grupie Supporting Files i jest po prostu skonfigurowany do wywoływania NSApplicationMain
.
main.swift
.
W AppDelegate.swift
pliku możesz zobaczyć @UIApplicationMain
.
AppDelegate jest początkowym plikiem wejściowym.
Zasadniczo: main.m
i AppDelegate.m
są trochę połączone Swift
z justAppDelegate.swift
Możesz przeczytać pliki i inicjalizację
Wyjątkiem jest specjalny plik o nazwie „main.swift”, który zachowuje się podobnie jak plik placu zabaw, ale jest zbudowany na podstawie kodu źródłowego aplikacji. Plik „main.swift” może zawierać kod najwyższego poziomu i obowiązują również reguły zależne od kolejności. W efekcie pierwsza linia kodu uruchamiana w „main.swift” jest niejawnie definiowana jako główny punkt wejściowy programu. Dzięki temu minimalny program Swift może być pojedynczą linią - o ile ta linia znajduje się w „main.swift”.
W Xcode szablony dla komputerów Mac domyślnie zawierają plik „main.swift”, ale w przypadku aplikacji na iOS domyślną wartością dla nowych szablonów projektów iOS jest dodanie @UIApplicationMain do zwykłego pliku Swift. Powoduje to, że kompilator syntetyzuje główny punkt wejścia dla aplikacji na iOS i eliminuje potrzebę stosowania pliku „main.swift”.
Alternatywnie możesz utworzyć link w implementacji głównego napisanego w Objective-C, typowego podczas przyrostowej migracji projektów z Objective-C do Swift.
W aplikacjach Swift są atrybuty:
@UIApplicationMain
(Dotyk kakaowy)@NSApplicationMain
(Kakao)które mówią szybkiemu kompilatorowi, gdzie jest punkt wejścia aplikacji.
To, co robi szybki kompilator pod maską, polega na tym, że tworzy main
funkcję, która zasadniczo wygląda tak samo jak w aplikacjach Objective-C i traktuje tę metodę jako punkt wejścia aplikacji (pierwsza metoda, która jest wywoływana podczas uruchamiania procesu aplikacji).
Jeśli chcesz przeczytać więcej o tym, co szybki kompilator robi z Main
atrybutami, skąd system operacyjny wie, gdzie jest punkt wejścia aplikacji, zachęcam do przeczytania tego artykułu: Zrozumienie punktu wejścia aplikacji na iOS
W Swift 5.3 jest nowy @main
atrybut, który pozwala kontrolować, gdzie punkt wejścia znajduje się w projekcie, a nie tylko main.swift
. Może istnieć tylko jeden wpis główny i nie możesz mieć main.swift
pliku ani atrybutu @main
. Więcej informacji można znaleźć pod adresem https://github.com/apple/swift-evolution/blob/master/propiments/0281-main-attribute.md .
@main
struct App {
static func main() {
print("Starting.")
}
}
main.swift
nigdzie znaleźć pliku. Jaka jest lokalizacja tego pliku?