Open vichye-1 opened 9 months ago
static func main()
메서드를 프로그램의 진입점으로 사용main.swift
파일 없이도 애플리케이션의 진입점을 합성할 수 있어 코드 구조가 간결해짐UIApplication
객체를 생성하고, 앱의 생명 주기를 관리함UIApplicationMain
함수를 호출하는 역할을 하며, 이 함수는 앱의 핵심 객체 구현과 앱 구동 플로우에서 중요한 역할을 수행함UIApplicationDelegate
를 채택하여 앱의 생명주기 이벤트를 관리하게 된다.main.m
소스파일에 있는 main()
함수 실행을 통해 UIApplication
객체가 생성될 수 있도록 한다.@main
어노테이션이 class or struct or enum 위에 붙으면 main()
정적 함수를 정의해야한다. UIApplicationDelegate
는 이 main()
정적 함수를 정의하고 있다.ex)
@main
class MyApp {
static func main() {
UIApplicationMain(CommandLine.argc, CommandLine.unsafeArgv, nil, NSStringFromClass(AppDelegate.self))
}
}
@Main
은 프로그램 실행 시작 시 진입점으로 타입을 지정하기 위한 Swift 언어 기능이다. @Main
속성을 사용 할 수 있다.@Main
은 Swift 5.3 버전 부터 사용하는 키워드 이며 그 이전 버전에서는 @UIApplicationMain
키워드를 사용하고 있다.Top-Level Code
란 함수 본문이나 클래스 내부에 적혀 있지 않은 실행 가능한 코드 즉 캡슐화되지 않은 실행 가능한 코드를 의미한다.Top-Level Code
가 허용하지 않는 이유는 다수의 소스파일에 Top-Level Code
가 있으면 프로그램이 어디에서 부터 시작해야할지 결정하기 어렵기 때문이다.Top-Level Code
를 작성하면 Statements are not allowed at the top level
오류가 발생한다.Top-Level Code
를 허용해준다.UIApplicationMain
은 UIApplication
와 AppDelegate
객체를 생성한다.UIApplcationMain
은 Main Event Loop
설정 및 이벤트 처리를 시작한다.UIApplicationMain
에서는 info.plist
에 불러올 Main.Storyboard
파일을 불러 온다.
@Main
@main
속성을 사용할 수 있다.@UIApplicationMain
이라는 키워드로 사용됨@UIApplicationMain
@main
속성을 사용함으로써 타입 기반의 코드에서 더 알맞은 앱 진입점을 표현해줄 수 있었다.Top-Level Code
1)Top-Level 선언
과2)실행 가능한 Top-Level Code
두 가지가 있다.자주 쓰이는 곳
App Delegate
- UIKitSwiftUIApp 구조체
- SwiftUI타임라인
main.m
소스 파일을 만들고 그 안에main()
함수를 정의하여 프로그램의 시작 지점을 명시함.main.swift
에서 main함수가 동일한 역할을 하고@UIApplicationMain
키워드를 사용하였고@main
어노테이션을 사용하여 별도의main.swift
파일 없이도 진입점을 표시할 수 있게끔 하였다참고