반응형
@main은 프로그램 실행 시작 시 진입점으로 타입을 지정하기 위한 Swift 언어의 기능이다.
사용자는 탑 레벨의 코드를 작성하는 대신 @main단일 유형의 속성을 사용할 수 있고, 라이브러리와 프레임워크는 프로토콜이나 클래스 상속을 통해 맞춤형 진입점 동작을 제공할 수 있다.
** AppDelegate에서 볼 수 있다.
@main vs @UIApplicationMain
1. 구조체에서 @main 대신 @UIApplicationMain를 쓴다면 class 선언에만 사용이 가능하다는 오류가 발생!
2. @UIApplicationMain 대신 @main을 사용함으로 타입 기반의 스위프트 코드에서 이상적인 진입점을 알려주며 main() 함수는 일반 정적 메서드이므로 프로토콜에서 확장 메서드 또는 기본 클래스로 제공 할 수 있다. -> 자유롭게 Entry Point 지정 가능!
3. 클래스나 구조체에 @main이 명시된 경우라면 static func main() 메서드가 실제 진입점이 된다! -> 자유롭게 Entry Point 지정 가능!
4. @main, @UIApplicationMain, 및 @NSApplicationMain는 컴파일러가 애플리케이션의 진입점을 합성하고 "main.swift" 파일이 필요 없도록 하는 속성!
참고
반응형
'iOS > Interview Questions' 카테고리의 다른 글
[iOS] struct, class, enum (0) | 2023.02.14 |
---|---|
[iOS] 앱이 foreground에 있을 때와 background에 있을 때 어떤 제약사항이 있는가? (0) | 2022.10.20 |
[iOS] 앱이 시작할 때 main.c 에 있는 UIApplicationMain 함수에 의해서 생성되는 객체 (0) | 2022.10.13 |
[iOS] App thinning(앱 시닝) 이란? (0) | 2022.10.13 |
[iOS] 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체 (0) | 2022.10.12 |