아마 Swift 환경에서 TableView를 사용해 보았다면 dequeueReusableCell
을 필수적으로 사용했을 것이다. 공식 문서에서도 행에 셀을 할당할 때, 개체를 재사용해야 한다고 말하고 있다.
공식문서에서는 지정된 재사용 식별자(indexPath)에 대해 재사용이 가능한 테이블 뷰 셀 객체를 반환하고 테이블뷰에 추가한다. 라고 설명하고 있다.
identifier
: 재사용할 셀 객체를 식별하기 위한 문자열이다. 이 매개 변수는 nil이 아니어야한다.
indexPath
: 셀의 위치를 특정하는 식별자이다. 항상 데이터 원본 객체에서 제공하는 index path를 지정해야 한다. 이 메소드는 index path를 사용하여 테이블뷰에서 셀의 위치를 기반으로 추가 구성을 수행하기 때문이다.
UITableViewCell
: 재사용 식별자와 연관된 UITableViewCell 개체이다. 이 메서드는 항상 유효한 셀을 반환한다.
그런데 Cell을 재사용하게 되면, 다양한 문제가 발생된다. 각 Cell마다 상태를 다르게 하고 싶은데, 재사용되면서 다른 Cell에 영향을 미치는 것이다. 이를 해결하기 위해 prepareForReuse()
를 사용한다.
공식문서에는 tableview 의 delegate가 셀을 재사용하도록 준비합니다. 라고 설명이 되어 있다.
UITableViewCell 객체가 재사용 가능한 경우 이 메서드는 UITableView 에 dequeueReusableCell (withIdentifier :) 메서드에서 객체가 반환되기 직전에 호출된다.
즉, Cell이 재사용 되기 전에 초기화 작업을 진행해주는 메서드라고 생각하면 될 것 같다.