스크롤 할 때마다 사진을 다운로드하는 앱을 만들 때 사진을 다운로드하는 작업을 비동기 처리하지 않으면 메인 쓰레드에서 모든 작업을 처리해 버벅대는 현상이 발생할 수 있다.
일을 대기행렬(큐, Queue)에 보내주면 iOS가 알아서 분배해 준다.
오래걸리는 작업들을 비동기적으로 동작하도록
만들어 준다.// global queue에 작업(클로저)을 비동기적으로 보낸다
DispatchQueue.global().async {
}
// 보낼 큐의 종류를 선언
let queue = DispatchQueue.global()
// 선언한 큐에 비동기적으로 작업을 보낸다.
queue.async {
}
GCD | Operation |
---|---|
간단한 일 | 복잡한 일 |
함수를 사용하는 작업(메서드 위주) | 데이터와 기능을 캡슐화한 객체 |
Operation은 GCD에 취소 / 순서지정 / 일시중지(상태추적) 등 여러 기능을 추가해서 만들어졌다.
바로 return 한다
안 기다리고
다음일을 진행기다린다
기다렸다가
다음일을 진행(block & async)다른 한개의 쓰레드에서
처리한다.다른 여러개의 쓰레드에서
처리한다.독립적이지만 유사한 여러개의 작업
을 처리할때 사용한다.