안녕하세요 :)
iOS 개발자 리치(rich_iosdev)입니다.
공유해드릴 내용은 뷰의 재사용 입니다.
뷰의 재사용은
만약 보여줄 데이터의 양은 많은데 보여주는 뷰의 수가 적은 경우 활용할 수 있습니다
그리고 뷰를 재사용함으로써 메모리를 절약하고 성능을 향상 시킬 수 있습니다
대표적인 예시로 2가지 뷰가 있습니다
- UITableView 의 셀인 UITableViewCell
- UICollectionView의 셀인 UICollectionViewCell
재사용의 원리
- 테이블뷰 및 컬렉션뷰에서 셀을 표시하기 위해 데이터 소스에 뷰(셀) 인스턴스를 요청합니다.
- 데이터 소스는 요청마다 새로운 셀을 만드는 대신 재사용 큐 (Reuse Queue)에 재사용을 위해 대기하고있는 셀이 있는지 확인 후 있으면 그 셀에 새로운 데이터를 설정하고, 없으면 새로운 셀을 생성합니다.
- 테이블뷰 및 컬렉션뷰는 데이터 소스가 셀을 반환하면 화면에 표시합니다.
- 사용자가 스크롤을 하게 되면 일부 셀들이 화면 밖으로 사라지면서 다시 재사용 큐에 들어갑니다.
- 위의 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 |