티스토리 뷰
iOS 프로젝트를 만들면 메인 스토리보드와 AppDelegate.swift, SceneDelegate.swift 파일이 기본 생성되어 있다. UIkit framework에서 delegate는 이벤트를 처리할 수 있는 대리자를 뜻한다. 따라서 AppDelegate는 Application 레벨에서 발생하는 이벤트를, SceneDelegate는 Scene 레벨에서 발생하는 이벤트를 처리한다는 뜻이다.
Scene
원래는 하나의 application이 하나의 scene을 가지고 있었기 때문에 이 둘을 구분할 필요가 없었지만 iPadOS가 등장하고 iPad에서 하나의 화면에 여러 application을 실행할 수 있게 되면서 이 둘의 관계가 더이상 1:1이 아니게 되었다.
이렇게 생성되는 이벤트가 어떤 상황에 어떤 순서로 발생하는지 알아보자. 그러면 그에 맞는 처리를 해당 delegate 함수에서 수행하도록 만들 수 있다.
각 이벤트 함수에 로그를 출력하도록 print를 작성 후 실행시켜 보자.
Application이 실행되면 가장 먼저 SceneSession에 연결하고 그 이후는 SceneDelegate에서 처리한다. session이 연결되면 scene이 foreground로 올라오며, 활성화 된다.
실행중인 앱을 볼 수 있는 화면으로 진입한 후의 로그를 보면 scene이 deactive 되지만 여전히 foreground 에 머물고 있다는 것을 알 수 있다.
여기서 완전히 홈 화면으로 진입하면 또 이벤트가 발생한다. 이제는 scene이 background로 들어가며, AppDelegate에서 현재 상태를 저장한다.
홈 화면에서 다시 앱을 실행하면 SceneDelegate에서만 이벤트를 처리한다. 아직 SceneSession이 유지되고 있어서 session에 연결을 시도하지 않는 것 같은데 이 session이 언제 끊어지는지는 더 많은 테스트를 해 봐야 될 것 같다.
'Programming > IOS' 카테고리의 다른 글
iOS Expert | 상단에 고정시킬 수 있는 StickyHeader (0) | 2021.04.12 |
---|---|
iOS Expert | CALayer Tutorial 원형 게이지 만들기 with CAShapeLayer (0) | 2021.01.06 |
IOS Beginner | UILabel size animation with UIView.animate (0) | 2021.01.02 |
iOS Expert | UICollectionView pinterest layout 만들어보기 (1) | 2020.12.31 |
IOS Beginner | UITableView tutorial dynamic height (0) | 2020.12.30 |
- Total
- Today
- Yesterday
- C/C++
- Spring
- 수학
- 드라마
- SOCKET
- mongoDB
- Java
- SwiftUI
- database
- SHADER
- 운영체제
- 데이터베이스
- 자료구조
- Git
- scala
- C
- Cocos2d-x
- 알고리즘
- game
- JSP
- DesignPattern
- C++
- winsock
- ue4
- ios
- OS
- machine learing
- 국내여행
- rxswift
- swift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |