Что означает "@UIApplicationMain"? - программирование
Подтвердить что ты не робот

Что означает "@UIApplicationMain"?

Я только что создал свой первый проект Swift, в AppDelegate.swift есть строка над объявлением класса - почему она есть?!

...
import UIKit
import CoreData

@UIApplicationMain // <- WHY IS IT HERE?
class AppDelegate: UIResponder, UIApplicationDelegate {
... 
4b9b3361

Ответ 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 и передаче этого имени класса в качестве имени класса делегата. (Источник)