티스토리 뷰
3. 벡 그라운드 테스크 의 활용
아래의 코드는 이미지 어레이를 만들어서 애니메이션처럼 순차적으로 변경되도록 하는 코드이다.
실행은 viewDidLoad 함수에서 실행이 되는 코드이다.

어떤 문제가 있을까? 이미지를 어레이로 만드는 구간의 작업이 헤비 해지면 첫 화면이 나오는 시간이 길어지면서 빈 화면을 출력할 수 있다.
다시 말하면 아래와 같이 화면이 나올 수 있다. 코드를 실행 해야 하기 때문에 첫 화면이 늦게 나오게 되고 그러면서 빈 화면 이후에 첫 이미지가 나오고 그다음 애니메이션 형태로 전환이 된다.

코드를 벡그라운드 테스트를 사용하는 형태로 수정을 해본다. 아래와 같은 형태이고, 이미지를 어레이로 넣는 구간이 벡 그라운드에서 시작된다. 이후에 작업이 완료가 되면 메인 스레드에 애니메이션 진행 테스크를 집어넣는다.

이 경우에 어떻게 화면에 표시 될까? 물론 애니메이션 코드의 실행은 바로 실행은 되지 않을 수 있다. (사실 벡 그라운드 스레드도 상당히 빨라서 바로 실행된다. )
우선은 빈 화면이 나오지 않고 첫 화면이 먼저 나오기 때문에 사용자 입장에서 화면이 로딩이 더 빨리된다고 느낄 수 있다. 또한 view 를 로딩하는데 시간이 걸릴 수 있는데 화면을 로딩하는 것과 애니메이션을 준비하는 것을 동시에 수행할 수 있다. 결국 2번째 코드가 로딩이 더 빠를 것이라고 생각한다.

정리: 딱 필요한 케이스가 viewDidLoad 함수에서 헤비한 작업을 해야 할 때 사용할 만하다.
'iOS' 카테고리의 다른 글
| Firebase 시작하기, FirebaseSDK, GoogleService-info.plist -1 (0) | 2022.04.21 |
|---|---|
| xcode - time profile (0) | 2022.04.06 |
| GCD (Grand Central Dispacher) - 2 (케이스 스터디) (0) | 2022.03.31 |
| jazzy (0) | 2022.03.22 |
| MVVM-1 (0) | 2022.03.18 |
- Total
- Today
- Yesterday
- AppThinning
- 모듏화
- GCD
- geohash
- 프로그래머스
- 코테
- swift
- jenkins
- Default Rules
- firebase
- 같이쓰기
- ATS failed system trust
- swiftLint
- AWS IoT
- 무료는 아니지만
- 빌드자동화
- GPT4
- CI/CD
- async
- ChatGPT
- XCTestExpectation
- Fastlane
- bitrise
- ios
- IF (KAKAO) DEV 2022
- xcode whitespace trim option
- chatgpt 4o
- MQTT
- Moya
- RxSwift
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 29 | 30 | 31 |