inflearn logo
강의

Course

Instructor

Yagom's iOS Programming

Example - Implementing Custom TableView Cell

configure 메소드의 DispatchQueue.main

342

seonjukim

5 asked

0

디스패치큐와 메인스레드에 대해 질문이 있습니다 🥲

 

Request.swift

image 메소드 구현부에서 DispatchQueue.main.async { completion(image) }로 메인스레드에서 클로저를 실행하도록 만들어주었었는데

 

FriendTableViewCell.swift

configure 메소드 내부의Request.image 메소드 호출부를 보면 completion 클로저에서도 또 메인스레드를 부르게 되어있어서

 

아래처럼 같은 일(메인스레드 부르는 일)을 중복으로 하게 되는 게 아닌지 궁금합니다! 제가 이해한 게 맞다면 이렇게 만들어주어야 하는 이유가 있을까요?

 

DispatchQueue.main.async {

    DispatchQueue.main.async {

        guard let cell: FriendTableViewCell = tableView.cellForRow(at: indexPath) as? FriendTableViewCell else {

            return

        }

        

        cell.profileImageView.image = image

    }

}

swift ios

Answer 1

0

yagom

안녕하세요 선주님!

 

중복을 부러 만드는 것은 아닙니다.

저렇게 중복하지 않게 코드를 다듬으면 더 좋아요.

다만, UI 표현 부분을 메인 스레드(DispatchQueu.main)에서 실행하지 않고 어딘가 다른 백그라운드 스레드에서 실행하면 문제가 발생하기 때문에, UI 관련한 부분은 메인 스레드에서 동작할 수 있도록 미리 대비를 해두는거예요.

저렇게 중복해도 문제가 발생할 여지가 적기에 그렇게 하는 것이지, 완전 좋은 방법은 아닙니다 :)

0

seonjukim

여러 예외상황을 대비한 거였군용 감사합니다! ☺️

강좌소개의 overview

0

370

1

prepareForReuse 사용 방법

0

620

1

화면이 야곰님처럼 로드되지 않아 질문드립니다.

0

375

2

버튼 이미지 크기가 조절이 안 되는데 어떤 부분을 조정해야 할까요?

0

2178

1

코드블록 10-3-5 에러

1

207

0

info에서 자동완성이 나오지 않는데 따로 설정을 해주어야 하는 부분인가요?

0

264

1

star buton

0

362

1

Singleton 관련 질문.

0

251

1

로컬 유저 노티피케이션에서 반복 주기 설정 방법 문의 드립니다.

0

532

0

Todo 앱에서 로컬 노티피케이션 해제 시 질문 드립니다.

0

352

1

ios13이 생기고 변경점 관련

0

204

1

8번 프로젝트

0

189

1

todo 앱에서 파일 저장 기능에 대한 질문입니다.

0

270

1

todo앱 User Notification에서 질문이 있습니다

0

437

1

9번 프로젝트 질문

1

278

2

9번 프로젝트 자료 질문

0

260

1

8번 프로젝트 > 도전과제 2번 질문

0

214

2

Todo 앱에서 일정 추가가 바로 반영되지 않습니다.

1

435

6

Todo 앱에서 DateFormatter 사용 관련 질문 드립니다.

0

289

1

5번 프로젝트 - 나머지 화면 구성하기

1

192

1

웹브라우저 - 코드로 기능 구현하기

1

569

3

어시스던트에 매뉴얼이 없습니다.

0

254

1

제공된 코드블럭 파일

0

250

2

5번째 프로젝트 질문입니다

0

131

0