2022. 12. 24. 01:40ㆍIOS
tableView의 prefetchRowAt 가 어떤 역할을 하는 지 포스팅하고자 한다. 실행화면을 직접 확인하며 어떤 역할을 수행하는지 확인하는 게 이해하기 제일 쉬울 것이다. 지난 포스팅에서 사용된 punkAPI 로 만든 앱을 가지고 왔다.
prefetchRowsAt
cellForRowAt 에서 print함수를 사용해 row가 생성될 때마다 해당 row의 값을 출력하도록 하였고 prefetchRowsAt 에 print함수를 사해당 index가 나타내는 값을 출력하도록 작성했다.
그럼 이제 출력 값을 살펴보자!
처음 앱을 키면 다음과 같이 출력값이 찍힌다.
스크롤을 하면 다음과 같이 출력된다.
테이블 뷰를 조금 내리자 아직 화면에 보이지 않은 5부터 14까지 row의 index가 찍힌 것을 확인할 수 있다. 즉 prefetchRowsAt는 화면에 보여지기 전에 미리 데이터를 준비하는 함수라는 것을 알 수 있다. 즉 cellForRowAt가 불리기 전 더 빠르게 화면을 구성하기 위해 미리 데이터를 준비하는 과정이라고 알면 편리하다.
그럼 이 매서드를 언제 사용해야 할까?
필자는 PunkAPI의 beers 데이터들을 URLSession를 통해 가져올때 한번에 가져오지 않았다. 25개씩 끊어서 가지고 왔기에 스크롤을 내리다보면 26번째 데이터가 필요할 때 다시 데이터를 가져와야 한다. 하지만 막상 셀을 만들기 직전에 URLSession을 통해 26 ~ 50번째의 데이터를 가져오는 과정은 시간적으로 비효율적이다. 따라서 prefetchRowsAt를 통해 아직 cell을 만들기 전에 미리 데이터를 가져와 효율적으로 데이터를 가져오고 셀을 만들 수 있도록 코드를 작성했다.
'IOS' 카테고리의 다른 글
[ios/swift] UIActivityViewController - shareSheet 만들기 (0) | 2022.12.30 |
---|---|
[ios / swift] @State, @Binding, @ObservableObject (1) | 2022.12.27 |
[ios/swift] URLSession으로 API데이터 가져오기 (0) | 2022.12.24 |
[ios/swift] xcode 파일 데이터 가져오기 (0) | 2022.12.22 |
[ios/swift] storyboard없이 코드로 작성하기(초기 설정) (0) | 2022.12.22 |