본문 바로가기
🍎 iOS/문서읽기

[Article - UITableView] Filling a table with data

by @Eddy 2023. 7. 28.
728x90

Notion에 정리했던 내용을 옮겨왔다.

애플 공식문서의 Article을 참고했습니다.

번역한 내용이 전체 내용이 아니며, 전체 내용 중 흥미로웠던 부분만 발췌해 번역했습니다.

요약

  1. TableView Cell은 lazy하게 관리되어, UITableViewDataSouce에 있는 cellForRowAt 메서드가 대신 빠르게 cell을 생성해야 하는데, 빠른 처리를 위해 해당 메서드 내에는 데이터 처리나 긴 연산을 넣어선 안 된다.
  2. TableView에 비용이 많이 드는 작업이 포함된다면, prefetching datasource를 사용해서 비동기적으로 처리해라.
  3. TableView의 컨텐츠가 변경되지 않는다면, Static TableView를 사용해서 시간을 절약해라.

Filling a table with data

개요

  • TableView는 data-driven(데이터 중심) element이다.
  • Data source object(UITableViewDataSource 프로토콜을 채택하는 객체)를 사용하여 앱의 데이터와 해당 데이터의 각 부분을 화면에 렌더링하는 데 필요한 view를 제공한다.
  • TableView는 화면에서 view를 정렬하고 data source object와 함께 작동하여 해당 데이터를 최신 상태로 유지한다.
  • TableView는 데이터를 행과 섹션으로 구성한다.
  • 행은 개별 데이터 항목을 표시하고 섹션은 관련 행을 함께 그룹화한다. 섹션은 필수는 아니지만 이미 계층 구조가 있는 데이터를 구성하는 좋은 방법이다.

Create and configure cells for each row 중

  • TableView는 TableView 행의 개별적인 Cell을 생성하라고 요청하지 않는다.
  • 대신, TableView는 cell을 lazily하게(느리게) 관리해서, 테이블의 보이는 부분의 내부 혹은 근처에 있는 셀만 요청한다.
  • 셀을 lazily하게 생성하는 것은 table이 사용하는 메모리의 양을 줄여준다.
  • 하지만, 이 말은 Data source object가 cell을 빠르게 만들어야 한다는 걸 의미한다.
  • 따라서, tableView(_: cellForRowAt:) method에 테이블의 데이터나 긴 연산을 수행하도록 사용하지 마라.

Prefetch data to improve perfomance

  • TableView에서 스크롤 성능은 매우 중요하다.
  • 만약 테이블 데이터를 가져오는데에 DB에서 데이터를 가져오는 것처럼 비용이 많이 드는 작업이 포함된다면, prefetching data source object(UITableVioewDataSourcePrefetching 프로토콜을 채택한 객체)를 사용해 View에서 스크롤하기 전에 데이터를 비동기적으로 Load를 시작해라.

Specify data statically in the storyboard

  • 프로토타이핑 중이거나 table 컨텐츠가 절대 변경되지 않을 때, 시간을 절약하기 위해 static table을 사용해라.
  • static table을 사용하면, storyboard file에서 table 데이터를 미리 만들고 그 데이터 소스 개체를 구현하지 마라.
  • 런타임에서 UIKit은 스토리보드에서 해당 데이터를 로드하고 대신 관리한다.
  • 런타임에서 static table 안의 데이터는 변경되지 않기 때문에, shipping app에서 사용하지 마라.
  • static tableView에 data source object를 할당하는 건 프로그래머의 오류이다.

참고: Storyboard 없이 static tableView 만들기

 

 

아마도 개발 중 흔히 볼 수 있는 이미지 로딩이 제대로 되지 않는 현상이나, 스크롤 시 버벅거리는 현상에 대한 내용으로 해석하고 읽었으며, 꽤 흥미로운 내용이었다.

 

참고자료

반응형

'🍎 iOS > 문서읽기' 카테고리의 다른 글

[SwiftUI] @State, @Binding  (0) 2024.01.07
[UIKit] UITableViewDiffableDataSource ( iOS 13.0+ )  (0) 2023.07.30
[UIKit] UITableView의 구조  (0) 2023.07.28
[UIKit] UITableViewCell의 구조  (0) 2023.07.28
[H.I.G] Designing for iOS 번역  (0) 2023.07.01

댓글