iOS 환경에서 앱(APP)의 실행/작동 원리 과정을 간단하게 표현하자면 아래와 같습니다.
(iOS 13.0 이전 작동원리)
1️⃣ 특정 앱(APP) 아이콘 터치
2️⃣
main()함수 실행3️⃣
mina()함수에서UIApplicationMain()함수를 호출하여UIApplication객체를 생성4️⃣
UIApplication객체는 앱(APP)의 화면(Load main UI file)을 준비5️⃣
First initialization: 화면 준비 후 앱(APP)을 초기화하여 실행을 준비(application(_:willFinishLaunchingWithOptions:)메서드 호출)6️⃣ 앱(APP)의 초기화 준비가 완료되면 해당 앱(APP)의 UI를 복원
7️⃣
Final initialization: 앱(APP)의 초기화 및 UI 복원 작업이 끝나면 마지막 초기화 작업을 진행 (application(_:didFinishLaunchingWithOptions:)메서드 호출)8️⃣ 앱(APP) 실행
9️⃣ 앱(APP)이 실행되면, 앱(APP)에서 발생하는 다양한 이벤트를 관리하는 무한 반복문(RunLoop)이 생성 및 작동
앱(APP)을 사용하게 되면 다양한 제스처(터치, 확대, 축소 등...)가 발생하게 되는데 이러한 각각의 제스처를 이벤트(Event)라 부릅니다.
1️⃣ 앱(APP)을 사용하면서 각각의 이벤트들이 쌓이게 되고, 쌓인 이벤트를 처리 및 관리하기 위해 "메인 무한 반복문(RunLoop)"으로 이동하게 됩니다.
이러한 메인 무한 반복문(RunLoop)을 "이벤트 핸들링 객체"라 부릅니다.
2️⃣ 이동한 이벤트는 메인 무한 반복문(RunLoop)을 통해 앱 객체(Application Object)에게 전달되며, 앱 객체는 해당 이벤트에 맞는 함수를 찾아 작동합니다.
3️⃣ 그 후 이벤트에 맞는 함수의 작동 결과를 화면에 출력하게 되며, 이러한 과정을 업데이트 사이클(Update Cycle)이라고 부릅니다.
✋ 업데이트 사이클(Update Cycle)
- 이벤트 결과에 맞는 화면을 그림 그리고, 그린 화면을 출력하는 과정을 업데이트 사이클(Update Cycle)이라 부릅니다.
- 그림을 그리는 역할은 1번 쓰레드(Main Thread)가 담당하고 있습니다.
- 업데이트 사이클(Update Cycle) 과정은 작업(이벤트)이 있을 때만 실행됩니다.
1️⃣ 앱(APP)을 시작하게 되면 해당 앱(APP)의 이벤트 처리를 담당하는 메인 런루프(무한 반복문: RunLoop)가 생성됩니다.
2️⃣ 다양한 이벤트를 처리하는 메인 런루프는 각각의 이벤트에 맞는 함수를 선택하여 실행합니다.
3️⃣ 이벤트를 처리한 함수의 실행 결과를 화면에 출력합니다. (Update Cycle)