Open Do-hyun-Kim opened 7 months ago
UIApplication
객체를 생성하는 역할을 한다.main()
함수를 실행한다.main()
함수 내부에서UIApplication(_:_:_:_:)
함수를 호출하여, UIApplication
객체를 생성한다.Info.plist
에 명시되어 있는 storyboard 를 찾아 로드한다. 앱이 스토리 보드를 사용하지 않는 다면 해당 단계는 건너뛴다.UIApplication
객체의 deleagte
를 통해 application(_:willFinishLaunchingWithOptions:)
델리게이트 메서드를 호출한다.state restoration: 앱이 종료되기 전 마지막 화면/상태를 복원하는 것
)을 지원한다면 UIApplication
객체의 deleagte
를 통해 관련 메서드를 호출한다.UIApplication
객체의 deleagte
를 통해 application(_:didFinishLaunchingWithOptions:)
델리게이트 메서드를 호출한다.UIApplicationMain(_:_:_:_:)
함수를 호출한다.-> UIApplication 싱글턴 객체가 생성됨
앱이 시작할 때 main.c 에 있는 UIApplicationMain 함수에 의해서 생성되는 객체는 무엇인가?
UIApplication
UIApplication
은SingleTone
형식으로 구성되어 있으며 모든 iOS앱은 단 하나의UIApplication
인스턴스를 가지고 있다.앱이 시작되면
UIApplicationMain(_,_,_)
함수를 호출한다.UIApplication
클래스는UIApplicationDelegate
프로토콜을 준수하고 있으며 일부 프로토콜을 필수적으로 구현하는 delegate을 정의한다.UIApplication
클래스는 Touch를 Trigger할 수 있다.isUserInteractionEnabled
같은 효과를 가지고 있으며 코드는 다음과 같습니다.beginIgnoringInteractionEvents
,endIgnoringInteractionEvents
이 코드는 iOS13 이후로deprecated
가 되었으며 해당 코드를 사용하는 것보다 isUserInteractionEnabled 를 사용하는 것을 지향하는 것으로 보입니다. with StackOverflowUIApplication
은UIApplicationDelegate
를 통해 앱 동작을 관리 할 수 있다.UIApplication
은 원격 노티피케이션 등록에 대한 제어를 관리 하고 있습니다.Objc 앱 시작 시 main() -> UIApplicationMain 함수의 흐름 설명 feat 이미지
UIApplicationMain
UIApplicationMain
은UIApplication
와AppDelegate
객체를 생성한다.UIApplcationMain
은Main Event Loop
설정 및 이벤트 처리를 시작한다.nib
파일을 사용하거나,info.plist
파일을 읽어들여 파일에 기록된 정보를 참고하여 그외에 필요한 데이터를 로드한다.UIMainStoryboardFiles
,UIApplicationScneneManifest
Swift 앱 시작 시 main() -> UIApplicationMain 함수의 흐름 설명
main()
함수를 실행한다.UIApplicationMain
함수 호출, 호출된 함수는 UIApplication 객체를 생성하고,Appdelegate
객체를 생성합니다.Appdelegate
내부의 메서드인application(_:willFinishLaunchingWithOptions:)
를 호출합니다.UI Resotration Process
를 수행합니다.UI Restoration process
란?Appdelegate
내의 여러 추가적인 메서드와 app 의Viewcontroller
들을 실행하는 과정.Appdelegate
의application(_:didFinishLaunchingWithOptions:)
메서드를 호출합니다📝 참고사이트