В 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нигде не могу найти файл. Где находится этот файл?