GCD (Grand Central Dispatch)-3 ( 케이스 스터디)
3. 벡 그라운드 테스크 의 활용
아래의 코드는 이미지 어레이를 만들어서 애니메이션처럼 순차적으로 변경되도록 하는 코드이다.
실행은 viewDidLoad 함수에서 실행이 되는 코드이다.
어떤 문제가 있을까? 이미지를 어레이로 만드는 구간의 작업이 헤비 해지면 첫 화면이 나오는 시간이 길어지면서 빈 화면을 출력할 수 있다.
다시 말하면 아래와 같이 화면이 나올 수 있다. 코드를 실행 해야 하기 때문에 첫 화면이 늦게 나오게 되고 그러면서 빈 화면 이후에 첫 이미지가 나오고 그다음 애니메이션 형태로 전환이 된다.
코드를 벡그라운드 테스트를 사용하는 형태로 수정을 해본다. 아래와 같은 형태이고, 이미지를 어레이로 넣는 구간이 벡 그라운드에서 시작된다. 이후에 작업이 완료가 되면 메인 스레드에 애니메이션 진행 테스크를 집어넣는다.
이 경우에 어떻게 화면에 표시 될까? 물론 애니메이션 코드의 실행은 바로 실행은 되지 않을 수 있다. (사실 벡 그라운드 스레드도 상당히 빨라서 바로 실행된다. )
우선은 빈 화면이 나오지 않고 첫 화면이 먼저 나오기 때문에 사용자 입장에서 화면이 로딩이 더 빨리된다고 느낄 수 있다. 또한 view 를 로딩하는데 시간이 걸릴 수 있는데 화면을 로딩하는 것과 애니메이션을 준비하는 것을 동시에 수행할 수 있다. 결국 2번째 코드가 로딩이 더 빠를 것이라고 생각한다.
정리: 딱 필요한 케이스가 viewDidLoad 함수에서 헤비한 작업을 해야 할 때 사용할 만하다.