iOS 캠프 TIL - 2021.01.21 목

Updated:

강의 - 테이블뷰와 동시성프로그래밍

학습활동 - 뷰의 재사용과 테이블뷰 셀의 이미지 지연로딩

  • 이니, 태태 , 제이콥

  • 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
  • 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