Odpowiedzi:
Punktem wejścia w zwykłym module Swift jest plik w module o nazwie main.swift. main.swiftjest 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 @UIApplicationMainatrybutu w implementacji UIApplicationDelegatezamiast main.swiftpliku, aby oznaczyć punkt wejścia. Cocoa używała minimalnego main.swiftpliku, który był po prostu wywoływany NSApplicationMain, ale od Xcode 6.1 używa @NSApplicationMainatrybutu w implementacji NSApplicationDelegate.
main.swiftznajduje się w grupie Supporting Files i jest po prostu skonfigurowany do wywoływania NSApplicationMain.
main.swift.
W AppDelegate.swiftpliku możesz zobaczyć @UIApplicationMain.
AppDelegate jest początkowym plikiem wejściowym.
Zasadniczo: main.mi AppDelegate.msą trochę połączone Swiftz 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 mainfunkcję, 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 Mainatrybutami, 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 @mainatrybut, 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.swiftpliku 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.swiftnigdzie znaleźć pliku. Jaka jest lokalizacja tego pliku?