В main()
быстром не существует метода. Программа должна откуда-то начинать выполнение. Итак, какова точка входа в быстрое выполнение кода и как это решается?
Ответы:
Точкой входа в простой модуль Swift является файл в вызываемом модуле main.swift
. main.swift
- единственный файл, которому разрешено иметь выражения и инструкции на верхнем уровне (все другие файлы Swift в модуле могут содержать только объявления).
Какао Touch использует @UIApplicationMain
атрибут в реализации UIApplicationDelegate
вместо main.swift
файла, чтобы отметить точку входа. Какао раньше использовал минимальный main.swift
файл, который просто вызывается NSApplicationMain
, но начиная с Xcode 6.1 использует @NSApplicationMain
атрибут в реализации NSApplicationDelegate
.
main.swift
находится в группе Supporting Files и просто настроен для вызова NSApplicationMain
.
main.swift
.
В AppDelegate.swift
файле вы можете увидеть @UIApplicationMain
.
AppDelegate - это файл исходной записи.
В основном: main.m
и AppDelegate.m
будут своего рода объединены в Swift
толькоAppDelegate.swift
Вы можете прочитать файлы и инициализация
Исключением является специальный файл с именем «main.swift», который ведет себя так же, как файл игровой площадки, но создается с использованием исходного кода вашего приложения. Файл «main.swift» может содержать код верхнего уровня, также применяются правила, зависящие от порядка. Фактически, первая строка кода для запуска в main.swift неявно определяется как основная точка входа для программы. Это позволяет минимальной программе Swift быть одной строкой, если эта строка находится в main.swift.
В Xcode шаблоны Mac по умолчанию включают файл «main.swift», но для приложений iOS по умолчанию для новых шаблонов проектов iOS добавляется @UIApplicationMain в обычный файл Swift. Это заставляет компилятор синтезировать основную точку входа для вашего приложения iOS и устраняет необходимость в файле «main.swift».
В качестве альтернативы вы можете добавить ссылку на реализацию main, написанную на Objective-C, что часто бывает при постепенном переносе проектов с Objective-C на Swift.
В приложениях Swift есть атрибуты:
@UIApplicationMain
(Прикосновение какао)@NSApplicationMain
(Какао)которые сообщают быстрому компилятору, где находится точка входа в приложение.
Что делает компилятор swift под капотом, так это то, что он создает main
функцию, которая в основном выглядит так же, как в приложениях Objective-C, и рассматривает этот метод как точку входа приложения (первый метод, который вызывается при запуске процесса приложения).
Если вы хотите узнать больше о том, что делает компилятор Swift с Main
атрибутами, как ОС знает, где находится точка входа в приложение, я рекомендую вам прочитать эту статью: Понимание точки входа в приложение iOS
В Swift 5.3 есть новый @main
атрибут, который позволяет вам контролировать, где ваша точка входа находится в вашем проекте, а не просто main.swift
. Может быть только одна основная запись, и у вас не может быть main.swift
файла и атрибута @main
. См. Https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md для получения более подробной информации.
@main
struct App {
static func main() {
print("Starting.")
}
}
main.swift
нигде не могу найти файл. Где находится этот файл?