티스토리 뷰
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
- chatgpt 4o
- GCD
- Fastlane
- Default Rules
- XCTestExpectation
- xcode whitespace trim option
- ios
- bitrise
- geohash
- 프로그래머스
- swiftLint
- jenkins
- AppThinning
- RxSwift
- 무료는 아니지만
- firebase
- 모듏화
- MQTT
- CI/CD
- AWS IoT
- 빌드자동화
- async
- ChatGPT
- ATS failed system trust
- 같이쓰기
- 코테
- IF (KAKAO) DEV 2022
- Moya
- swift
- GPT4
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |