본문 바로가기

Codes Travel/iOS Boost Course #2019

뷰의 재사용 이란?

안녕하세요 :)

iOS 개발자 리치(rich_iosdev)입니다.


공유해드릴 내용은 뷰의 재사용 입니다.

 

뷰의 재사용
만약 보여줄 데이터의 양은 많은데 보여주는 뷰의 수가 적은 경우 활용할 수 있습니다
그리고 뷰를 재사용함으로써 메모리를 절약하고 성능을 향상 시킬 수 있습니다

 

대표적인 예시로 2가지 뷰가 있습니다

 

- UITableView 의 셀인 UITableViewCell

- UICollectionView의 셀인 UICollectionViewCell

 

재사용의 원리

 

[부스트코스] iOS 프로그래밍, '뷰의 재사용' 이미지 참조

 

  1. 테이블뷰 및 컬렉션뷰에서 셀을 표시하기 위해 데이터 소스에 뷰(셀) 인스턴스를 요청합니다.
  2. 데이터 소스는 요청마다 새로운 셀을 만드는 대신 재사용 큐 (Reuse Queue)에 재사용을 위해 대기하고있는 셀이 있는지 확인 후 있으면 그 셀에 새로운 데이터를 설정하고, 없으면 새로운 셀을 생성합니다.
  3. 테이블뷰 및 컬렉션뷰는 데이터 소스가 셀을 반환하면 화면에 표시합니다.
  4. 사용자가 스크롤을 하게 되면 일부 셀들이 화면 밖으로 사라지면서 다시 재사용 큐에 들어갑니다.
  5. 위의 1번부터 4번까지의 과정이 계속 반복됩니다.

애플 공식 문서 상에서도 아래 셀 재사용 함수를 찾아보면 내용을 확인할 수 있습니다!!

dequeueReusableCell(withIdentifier:)

 

TableView의 DataSource는 tableView(:cellForRowAt:) 함수를 사용하여 Cell을 TableView의 Row(행)에 넣어줄 때, UITableViewCell 오브젝트를 재사용해야합니다.

 

  • TableView는 DataSource가 재사용을 하도록 표시해둔 UITableViewCell 오브젝트를 Queue 또는 List에 지속적으로 저장해둡니다. TableView의 새로운 Cell을 생성하기 위해서 DataSource 오브젝트로 부터 tableView(:cellForRowAt:) 함수가 실행됩니다.
  • 이 함수는 만약 재사용 큐에 셀이 존재한다면 현재 재사용 큐에 있는 셀을 dequeue(꺼낸다) 해주고, 재사용 큐에 셀이 없으면 새로운 셀을 생성합니다. ( 이 때 생성된 셀은 이전에 클래스나 nib 파일로부터 등록된 UITableViewCell을 활용합니다. )

위에서 설명드린 UITableViewCell의 재사용과 마찬가지로 UICollectionViewCell 또한 재사용 됩니다. 

 

잘못된 내용이 있다면 댓글 부탁드립니다!

확인해서 수정하도록 하겠습니다 :)

 

끝까지 읽어주셔서 정말 감사합니다.

 

Reference

 

[부스트코스] iOS 프로그래밍

뷰의 재사용

https://www.edwith.org/boostcourse-ios/lecture/16891/

 

apple 공식 문서

dequeueReusableCell(withIdentifier:)

https://developer.apple.com/documentation/uikit/uitableview/1614891-dequeuereusablecell

'Codes Travel > iOS Boost Course #2019' 카테고리의 다른 글

UITableView - DataSource & Delegate  (0) 2019.08.05
세그 (Segue) ?  (0) 2019.08.01
UITableViewCell (테이블 뷰 셀)?  (0) 2019.08.01
UITableView ( 테이블 뷰 )?  (0) 2019.07.31
Gesture Recognizer란?  (0) 2019.07.24