iOS/Interview Questions

[iOS] @Main에 대해

hilily 2022. 10. 20. 14:01
반응형

@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" 파일이 필요 없도록 하는 속성!

 

참고

https://seungchan.tistory.com/79

반응형