[IOS 로드맵] DispatchQueue(= GCD queue)

willis18·2021년 10월 1일
0

IOS 로드맵

목록 보기
25/109

DispatchQueue에 관하여 설명 : https://zeddios.tistory.com/513
DispatchQueue에 사용기(+코드) :
https://zeddios.tistory.com/516
https://zeddios.tistory.com/520?category=682195

역시 방대한양을 깔끔히 정리해주시고 자세히 정리해줘서 링크로 별도 첨부 ㅠㅠ
보다보면 Operation Queue도 있을텐데 읽어보시기를 추천드립니다.
간단하게 뭐냐고 보자면

  • Operation Queue : 비동기적으로 실행되어야 하는 작업을 객체 지향적인 방법으로 사용하는 데 적합합니다. KVO(key Value Observing)를 사용해 작업 진행 상황을 감시하는 방법이 필요할 때도 적합합니다.
  • GCD : 작업이 복잡하지 않고 간단하게 처리하거나 특정 유형의 시스템 이벤트를 비동기적으로 처리할 때 적합합니다. 예를 들면 타이머, 프로세스 등의 관련 이벤트입니다.

간단히 저 같은 경우엔 이렇게 활용했습니다

 DispatchQueue.global().async {
            guard let imageURL: URL = URL(string: movie.image) else { return  }
            guard let imageData: Data = try? Data(contentsOf: imageURL) else { return }
            DispatchQueue.main.async {
                if let index: IndexPath = tableView.indexPath(for: cell){
                    if index.row == indexPath.row{
                        cell.movieImage.image = UIImage(data: imageData)
                    }
                }
            }
        }

global에다가 필요한 작업들을 넣고
main에 화면에 표시되는 동작들을 쓰는 걸로 아는데
사실 글로벌에 넣고 돌리면 이거 메인에서 돌려야하는데? 라고 에러코드를 내뱉기도 해서 수정 하기도 합니다 ㅋㅋㅋㅋ
GCD는 그래도 프로그램이 얼추 알아서 관리해주기 때문에 가벼운 작업의 비동기처리는 이렇게 활용하기!

0개의 댓글