iOS

테이블 뷰의 재사용 매커니즘

jangsilverbaby 2021. 7. 26. 15:23

화면에 나타내야 할 데이터가 아무리 많아도 테이블 뷰는 화면에 당장 표시할 만큼의 셀만 만들고, 나머지는 필요할 때(화면에 보여야 하는 딱 그만큼)마다 생성한다.

스크롤로 인해 화면을 벗어나게 된 기존 셀들은 테이블 뷰에서 제거한 후 재사용을 위해 큐에 저장한다. 새로운 셀이 필요해지는 시점이 되면 큐에 저장된 셀을 꺼내어 재사용하고, 저장된 셀이 없을 경우 새로 생성한다.

※ 재사용 큐에 저장된 셀 자체는 재사용하지만, 셀의 콘텐츠는 tableView(_:cellForRowAt:) 메소드를 통하여 매번 새롭게 구성된다.

   → 스크롤이 원활하게 실행되게 하기위한 프로그래밍 원칙

  1. 반복적으로 호출되는 메소드의 내부에는 네트워크 통신 등 처리 시간이 긴 로직을 포함하지 않아야 한다.
  2. 네트워크 통신을 통해 읽어온 데이터는 재사용할 수 있도록 캐싱(Cashing) 처리하여 될 수 있으면 네트워크 통신 횟수를 줄이는 것이 좋다. (메모이제이션(memoization) 기법 : 프로그램이 동일한 계산을 반복헤애 할 때 이전에 계산한 값을 메모리에 저장함으로써 반복 수행을 제거하고 프로그램의 실행 속도를 빠르게 하는 기술)
  3. 네트워크 통신이나 시간이 오래 걸리는 코드를 사용할 때는 비동기로 처리하는 것이 바람직하다.

 

참고 : 꼼꼼한 재은씨의 Swift 실전편