Ответ 1
Как упоминалось в примечаниях к выпуску:
Приложения OS X теперь могут применять атрибут @NSApplicationMain для своего класса делегирования приложений, чтобы создать неявную основную часть приложения. Этот атрибут работает так же, как атрибут @UIApplicationMain для приложений iOS.
Итак, в основном, это способ заставить ваше приложение загрузиться и работать без необходимости писать какой-либо шаблонный шаблон глобального уровня в отдельном файле Swift. В предыдущих версиях Xcode, когда вы создали новый проект Swift Cocoa, Xcode создаст файл main.swift
для нового проекта OS X, который выглядит так:
import Cocoa
NSApplicationMain(Process.argc, Process.unsafeArgv)
И это была главная точка входа. Теперь Xcode не беспокоит создание этого файла; вместо этого он просто отмечает делегат вашего приложения с помощью @NSApplicationMain
, и этот шаг начальной загрузки обрабатывается за кулисами.
Дополнительная информация из Язык быстрого программирования:
Применить этот атрибут к классу, чтобы указать, что он является делегатом приложения. Использование этого атрибута эквивалентно вызову функции
NSApplicationMain
и передаче этого имени класса в качестве имени класса делегата.Если вы не используете этот атрибут, поставьте
main.swift
файл с функциейmain
, которая вызывает функциюNSApplicationMain
. Например, если ваше приложение использует собственный подклассNSApplication
в качестве его основного класса, вызовите функциюNSApplicationMain
вместо этого атрибута.