프로젝트를 수행하고 있던 중에, 컬렉션 뷰 셀을 초기화와 동시에 서버에서 호출한 데이터를 불러와야 하는 일이 있었다.
그래서 아무 생각 없이 UICollectionViewDataSource 프로토콜의 메서드인
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {}
이 안에다 초기화 코드와 서버 호출 코드를 모두 작성했다.
그랬더니 발생한 문제... 셀이 재사용될 때마다 불필요한 서버 호출이 발생하는 것이다.
내가 원하는 건 단 한번의 서버 호출로 셀에 데이터를 채우고 초기화하는 거라 코드를 수정할 필요가 있었다.
override init(frame: CGRect) {
super.init(frame: frame)
// 서버 호출, 데이터 채워넣기
}
가장 먼저 셀을 초기화하는 부분으로 호출하는 코드를 옮겼더니 원하는 대로 셀이 초기화될 때 한 번의 서버 호출로 데이터가 채워졌다.
'삽질기' 카테고리의 다른 글
[iOS] Swfit로 해시태그 기능 구현하기 (0) | 2021.03.25 |
---|---|
[iOS] extension에서 Override하기 (1) | 2021.03.09 |