App Life Cycle
- Model: 데이터를 저장하고 사용하는내용 (유저정보, 게임데이터, 지도정보, 각종데이터를 다루기위한 코드들)
- View: 아이폰앱에서 우리가 표현하고싶은 View, 사용자가 직접보게되는 화면구성에 사용되는 Dbject, 한개 또는 여러개가 될수도 있다.
- Controller: View와 Model사이의 중간 전달자역할. Model이 View에게 직접 전달하는것이아니고 Controller통해 전달을 한다.
Main run loop
- 터치나, 줌인 줌아웃을 할때 먼저들어온게 먼저 처리하는것, 순환하면서 반복 이벤트가 발생하는것을 체크 한다. 여러가지 작업들을 처리함.
어플에 전달을하고 코어에 전달하고 os에전달하는 과정
State changes in iOS app
- 라이프 사이클: 앱의생명주기, 뷰컨트롤러생명주기, 뷰의생명주기 등 (시작과 끝이 존재함)
- Not running: 실행되지 않았거나, 시스템에 의해 종료된 상태
- Foreground: 사용하는 앱의 상태
- Inactive: 앱을 실행할때 잠깐 거치기도하지만, 전화등으로 앱이 잠깐멈출때도 해당 다른 앱으로 인해 앱이 멈춰져야하는 상태일때 Inactive로 전환된다.
- Active: 현재 아이폰화면에서 어플리케이션이 실제로 활동하는 상태
- Background: 동작은 혀용되는 상태(음악, 지도 등)
- Suspended: 더이상 쓸 필요가 없거나 메모리가 부족해서 종료해야 하는 상태
- 메모리에 남아는 있지만 동작(실행)은 하지않음. 담아는 두고 실행은 안시킴
- Suspended상태에서 강제종료가 되면 다시실행할 때 처음부터 다시 런처화면을 띄운다.(Suspended -> Not running상태)
- 이전 화면이 바로 올라오는 상태는 Suspended상태이고, Background상태일때에는 이전상태 그대로 올라온다.
Execution states for Apps
- 어떤시점마다 처리할 것이 있다면 알려주고 그안에서 작업할수있는 메서드를 제공
- 실행된직후 화면에 보이기 직전에 앱에서 호출되는 메서드(초기화작업)
Launch time
- Launch time: 함수의 실행 이전에 시스템 실행 내용
- Your code: 내가 신경써야하는 부분
- 최종 초기화지점: didFinishLaunchingWithOptions
- 프로젝트내에서는 메서드나 함수만 작성이 가능하다. 값은 할당할수있는데 프린트는 불가
->왜? 앱을실행시 메인함수가 먼저 실행되고 넘어가는데 메인을 생략하기 때문에 바로실행시키는 함수는 불가. 만약 사용시 탑레벨로 인한 오류가 발생하는데 탑이 main( )이여서 생략되어있기 때문에 불가함
- @UIApplicationMain = main( ) 메인함수를 대신한다.(따로 main( )만들지 않아도됨 )
- Main( ): 앱이 실행된다는 것 (앱의시작점), 가장먼저 호출, 메인함수로부터 모든게 시작 내가 만든 모든앱들이 여기를 통해 실행. 가장 기본이되는 정보를 넘겨줘서 시스템이 앱을 구동할수있는 역할.
1 | 1. SceneDelegate 사용할때 |