방금 첫 번째 Swift 프로젝트를 만들었습니다 AppDelegate.swift. 클래스 선언 위에 줄이 있습니다. 왜 거기에 있습니까?!
...
import UIKit
import CoreData
@UIApplicationMain // <- WHY IS IT HERE?
class AppDelegate: UIResponder, UIApplicationDelegate {
...
답변:
@UIApplicationMainSwift 의 속성은 main.mObjective-C 프로젝트에서 발견 된 사소한 파일을 대체합니다 (목적은 main모든 C 프로그램의 진입 점 인 함수 를 구현 UIApplicationMain하고 Cocoa Touch 실행 루프 및 앱 인프라를 시작하는 호출입니다 ).
Objective-C에서 UIApplicationMain함수가 제공 하는 앱별 구성의 주요 (heh) 비트는 앱의 사용자 지정 클래스 중 하나를 공유 UIApplication개체 의 대리자로 지정하는 것입니다 . 스위프트, 당신은 쉽게 추가하여이 클래스를 지정할 수 있습니다 속성을 이 클래스의 선언. ( 이유가 있다면 함수를 직접 호출 할 수도 있습니다 . Swift에서는 해당 호출을 파일의 최상위 코드에 넣습니다 .)@UIApplicationMainUIApplicationMainmain.swift
@UIApplicationMainiOS 전용입니다. OS X에서 앱 델리게이트는 전통적으로 Info.plist (Swift의 경우 ObjC와 동일)에서 지정한 기본 nib 파일에 설정되어 있지만 OS X 스토리 보드에는 기본 nib 파일이 없으므로 @NSApplicationMain동일한 작업이 수행됩니다.
UIApplicationMain이 있습니다. developer.apple.com/library/ios/documentation/Swift/Conceptual/...
@UIApplicationMain 속성은 main.m 파일 및 응용 프로그램을 시작할 진입 점을 대체합니다.
이 @UIApplicationMain없이 프로그램이 작동 할 수있는 또 하나의 일은 // @ UIApplicationMain` 객관적인 c에서 main.m과 동일한 main.swift를 생성하고 아래 코드를 작성하는 것입니다. 그것은 당신의 응용 프로그램의 시작점이 될 것입니다
import Foundation
class FLApplication: UIApplication
{
override func sendEvent(event: UIEvent!)
{
println("Entry Point") // this is an example
}
}
Foundation수입은 FLApplication어떤 서브 클래스의 사용을 선언하지 않고 임의의 서브 클래스는 ... 미안하지만,이 답변의 아무도는 첫 문장을 제외하고 의미가 없습니다.
AppDelegate.swift의 소스 파일은 두 가지 기본 기능이 있습니다 :
앱에 대한 진입 점과 앱에 입력 이벤트를 전달하는 실행 루프를 만듭니다. 이 작업은 파일 상단에 나타나는 UIApplicationMain 속성 (@UIApplicationMain)에 의해 수행됩니다 . UIApplicationMain은 앱의 수명주기를 관리하는 애플리케이션 개체와 앱 대리자 개체를 만듭니다.
앱 델리게이트 객체의 청사진 인 AppDelegate 클래스를 정의 합니다. 앱 대리자는 앱의 콘텐츠가 그려지는 창을 만들고 앱 내에서 상태 전환에 응답 할 수있는 위치를 제공합니다. AppDelegate 클래스는 사용자 지정 앱 수준 코드를 작성하는 곳입니다.
이제 Swift 문서가 업데이트되었으므로 다음은 관련 구절입니다.
NSApplicationMain
이 특성을 클래스에 적용하여 응용 프로그램 대리자임을 나타냅니다. 이 속성을 사용하는 것은 NSApplicationMain ( : :) 함수 를 호출 하고이 클래스의 이름을 델리게이트 클래스의 이름으로 전달하는 것과 같습니다 .
이 속성을 사용하지 않는 경우 NSApplicationMain ( : :) 함수 를 호출하는 main () 함수와 함께 main.swift 파일을 제공하십시오. 예를 들어 앱에서 NSApplication의 사용자 지정 하위 클래스를 주 클래스로 사용하는 경우이 특성을 사용하는 대신 NSApplicationMain 함수를 호출합니다.