화면에 나타내야 할 데이터가 아무리 많아도 테이블 뷰는 화면에 당장 표시할 만큼의 셀만 만들고, 나머지는 필요할 때(화면에 보여야 하는 딱 그만큼)마다 생성한다.
스크롤로 인해 화면을 벗어나게 된 기존 셀들은 테이블 뷰에서 제거한 후 재사용을 위해 큐에 저장한다. 새로운 셀이 필요해지는 시점이 되면 큐에 저장된 셀을 꺼내어 재사용하고, 저장된 셀이 없을 경우 새로 생성한다.
※ 재사용 큐에 저장된 셀 자체는 재사용하지만, 셀의 콘텐츠는 tableView(_:cellForRowAt:) 메소드를 통하여 매번 새롭게 구성된다.
→ 스크롤이 원활하게 실행되게 하기위한 프로그래밍 원칙
- 반복적으로 호출되는 메소드의 내부에는 네트워크 통신 등 처리 시간이 긴 로직을 포함하지 않아야 한다.
- 네트워크 통신을 통해 읽어온 데이터는 재사용할 수 있도록 캐싱(Cashing) 처리하여 될 수 있으면 네트워크 통신 횟수를 줄이는 것이 좋다. (메모이제이션(memoization) 기법 : 프로그램이 동일한 계산을 반복헤애 할 때 이전에 계산한 값을 메모리에 저장함으로써 반복 수행을 제거하고 프로그램의 실행 속도를 빠르게 하는 기술)
- 네트워크 통신이나 시간이 오래 걸리는 코드를 사용할 때는 비동기로 처리하는 것이 바람직하다.
참고 : 꼼꼼한 재은씨의 Swift 실전편
'iOS' 카테고리의 다른 글
코코아팟(CocoaPods)으로 라이브러리 설치하기 (0) | 2021.11.22 |
---|---|
이미지를 코어 데이터에 저장할 때 주의할 점 (0) | 2021.11.19 |
브릿징 헤더 파일 (0) | 2021.09.01 |
인앱 프레임워크(In-App Framework) (0) | 2021.08.05 |
A ?? B, Nil-Coalescing Operator (0) | 2021.07.20 |