HypeDitto / iOS-Study

iOS 기술 면접 대비
0 stars 0 forks source link

@Main에 대해서 설명하시오. #7

Open YouHojoon opened 1 year ago

YouHojoon commented 1 year ago

Swift에서는 @main 어노테이션을 통해 EntryPoint를 지정한다. @main을 사용하면 Top-Level 코드 작성을 대체할 수 있다. 기존에는 @UIApplicationMain를 사용했으나 이는 클래스에서만 사용이 가능하다. 이를 해결하기 위해 @main 속성을 사용하게 되었다.

Top-Level 코드? Top-Level 코드는 0개 이상의 명령문, 선언 및 표현식으로 구성되며 함수, 클래스 또는 다른 무언가로 감싸지지 않은 모든 구문을 의마한다. Top-Level 코드에서 선언된 변수, 상수 및 그 외 선언은 동일 모듈의 일부인 모든 소스 파일의 코드에서 접근할 수 있다. Top-Level 코드는 Top-Level 선언과 실행 가능한 Top-Level code 두가지로 나눌 수 있다. 선언은 선언만으로 구성되어 모든 swift 소스 파일에서 허용되지만, 실행 가능할 코드는 선언 뿐만이 아닌 명령문 및 표현식이 포함되며 Entry Point로만 허용된다.

HeegeePark commented 1 year ago

스위프트는 main() 함수가 없어 @main 어노테이션으로 object-c에서 main() 함수가 실행되어 진행되는 과정을 실행합니다.

object-c

1.앱이 실행되면서 맨 처음 main()함수가 실행된다

2.main()함수는 UIApplicationMain()함수를 호출한다

3.UIApplicationMain()함수가 UIApplication객체를 생성한다. 이 객체는 앱의 본체에 해당.

4.UIApplication객체는 info.plist 파일로부터 앱 구성에 필요한 정보들을 로드한다.

5.이벤트 루프 및 초기설정을 진행한다.

6.실행 완료 직전에 앱 델리게이트의 application(_:didFinishLaunchingWithOptions:)메소드가 호출된다.

swift

@main 어노테이션을 찾고 그 클래스를 실행한다.