iOS 캠프 TIL - 2021.01.21 목
강의 - 테이블뷰와 동시성프로그래밍
학습활동 - 뷰의 재사용과 테이블뷰 셀의 이미지 지연로딩
-
이니, 태태 , 제이콥
- Step 1 : 다음의 조건을 만족하는 테이블뷰를 구현해봅시다
- 섹션이 10개이며, 각 섹션의 줄 수는 [섹션번호+2] 개 (섹션번호는 0부터 시작)
- 4번 섹션까지는 셀의 레이블에
(섹션번호, 줄번호)
를 표기하고, 그 이후는 없음 - 각 섹션의 3번 줄은 빨간색 배경을 가진 셀을 표시
- Step 2: Step 1의 테이블뷰의 각 셀의 이미지뷰에 아래의 조건에 해당하는 이미지 표시
- 0번째 셀의 이미지
- https://wallpaperaccess.com/download/europe-4k-1369012
- 1번째 셀의 이미지
- https://wallpaperaccess.com/download/europe-4k-1318341
- 2번째 셀의 이미지
- https://wallpaperaccess.com/download/europe-4k-1379801
- 0번째 셀의 이미지
- prepareForReuse() 사용하는것과 직접 프로퍼티를 초기화 하는 것의 차이?
- 유지관리측면에서 커스텀 셀 자체에서 재사용 준비작업을 해주는것이 더 좋다고 생각
- 커스텀셀을 여러 테이블뷰에서 사용한다 했을 때, 그 커스텀셀만 불러오면 알아서 처리가 되니까…
- prepareForReuse()는 재사용 되기전에 백그라운드에서 알아서 작동되지만, tableView(cellForRowAt)은 메인스레드에서 처리되므로 무거운 작업이 있으면 느려질 수 있다
- URLSession.dataTask(with:).resume()
- 데이터를 요청하고 받아오는 작업 쓰레드를 만들어서 비동기 처리해줌
if let url = url {
var configuration = cell.contentConfiguration as! UIListcontentconfiguration
URLSession(configuration: .default).dataTask(with: url) { (data, response, error) in
configuration.image = UIImage(data: data!)
DispatchQueue.main.async {
cell.contentConfiguration = configuration
}
}
}
Leave a comment