Что означает "@UIApplicationMain"?
Я только что создал свой первый проект Swift, в AppDelegate.swift
есть строка над объявлением класса - почему она есть?!
...
import UIKit
import CoreData
@UIApplicationMain // <- WHY IS IT HERE?
class AppDelegate: UIResponder, UIApplicationDelegate {
...
Ответы
Ответ 1
Атрибут @UIApplicationMain
в Swift заменяет тривиальный файл main.m
, найденный в проектах Objective-C (целью которого является реализация функции main
, чтобы начальная точка для всех программ на C и вызов UIApplicationMain
начиналась Cocoa Контур вызова и инфраструктура приложения).
В Objective-C основной (хех) бит конфигурации для каждого приложения, предоставляемый функцией UIApplicationMain
, обозначает один из ваших пользовательских классов приложения как делегат общего объекта UIApplication
. В Swift вы можете легко назначить этот класс, добавив атрибут @UIApplicationMain
к объявлению этого класса. (Вы также можете вызывать функцию UIApplicationMain
напрямую, если у вас есть причина. В Swift вы помещаете этот вызов в код верхнего уровня в файле main.swift
.)
@UIApplicationMain
предназначен только для iOS. В OS X делегат приложения традиционно устанавливается в основной файл nib, указанный Info.plist(тот же для Swift, что и для ObjC), - но с раскадройками OS X нет основного файла nib, поэтому @NSApplicationMain
делает то же самое там.
Ответ 2
атрибут @UIApplicationMain является заменой файла main.m и точкой входа для запуска вашего приложения.
Еще одна вещь, которую ваша программа может работать без этого @UIApplicationMain, все, что вам нужно сделать, это комментарий // @UIApplicationMain`
создайте main.swift так же, как main.m в объективе c, и напишите ниже код.
это будет точкой входа вашего приложения.
import Foundation
class FLApplication: UIApplication
{
override func sendEvent(event: UIEvent!)
{
println("Entry Point") // this is an example
}
}
Ответ 3
Исходный файл AppDelegate.swift имеет две основные функции:
-
Он создает точку входа в ваше приложение и цикл выполнения, который обеспечивает
введите события в приложение. Эта работа выполняется с помощью UIApplicationMain
атрибут (@UIApplicationMain), который появляется в верхней части
файл. UIApplicationMain создает объект приложения, который
ответственный за управление жизненным циклом приложения и приложения
делегировать объект.
-
Определяет класс AppDelegate, проект для объекта делегирования приложения. Делегат приложения создает окно, в котором отображается контент приложений, и предоставляет место для ответа на переход состояния в приложении. Класс AppDelegate - это место, где вы пишете свой пользовательский код уровня приложения.
Ответ 4
Теперь, когда документация Swift обновлена, вот соответствующий отрывок:
NSApplicationMain
Применить этот атрибут к классу, чтобы указать, что он является делегатом приложения. Использование этого атрибута эквивалентно вызову функции NSApplicationMain (::) и передаче этого имени класса в качестве имени класса делегата.
Если вы не используете этот атрибут, поставьте файл main.swift с помощью функции main(), которая вызывает функцию NSApplicationMain (::). Например, если ваше приложение использует собственный подкласс NSApplication в качестве его основного класса, вызовите функцию NSApplicationMain вместо этого атрибута.
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Attributes.html
Ответ 5
@UIApplicationMain - это атрибут, применяемый к классу -declared ниже AppDelegate, чтобы предоставить дополнительную информацию об этом классе.
В этом случае атрибут @UIApplicationMain указывает, что класс AppDelegate является делегатом приложения вашего приложения.
Ответ 6
UIApplicationMain
Примените этот атрибут к классу, чтобы указать, что он является делегатом приложения. Использование этого атрибута эквивалентно вызову функции UIApplicationMain и передаче этого имени класса в качестве имени класса делегата.
(Источник)