---
# System prepended metadata

title: Untitled

---

1. ViewController`func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {`내부에 `activityIndicatorView.stopAnimating()` 이 첫번째 줄에 있는데요. cellForItemAt의 경우는 cell이 그려지는 갯수만큼 호출됩니다. 그렇다면 해당 코드의 위치는 의도하신 걸까요?

- 처음에 콜렉션뷰에 이미지가 그려지기 시작하면 indicator의 애니메이팅을 멈추도록 했습니다. 
- 그런데 질문해주신것처럼.
- cell이 그려질때마다 불필요한 호출이 있다는것을 확인했습니다.
- 여기서 개선이 필요하다는것을 느끼고 컬렉션뷰의 각 이미지마다 indicator를 달아서 비동기로 가져오는게 완료된 그 순간에 애니메이팅을 멈추도록 새롭게 구현해주었습니다.

2. CustomCollectionViewCell셀이 그러질때 `func configureImage(imageSource: String) {` 를 계속 호출합니다. 응답이 오기 전 셀이 재사용 된다면 어떤 문제가 발생할까요?

- 비동기처리로 해당 셀에 대한 이미지가 들어올때 스크롤을 아래나 위로 휙휙 이동했을경우 셀의 재사용으로 인해 원래 '10'이라는 이미지가 보여야할곳에 이제막 비동기처리를 끝낸 엉뚱한'3'이라는 이미지가 보여지는 것 같습니다.
- 그래서 이 문제는 재사용을 거치는 prepareForReuse() 메서드 안에서 모든 요소들을 초기화 (nil) 해주어야 해결이 가능할거란 생각이 들었습니다.
- 하지만 이렇게 처리를 해주어도 셀에 엉뚱한 이미지가 들어오는건 해결할 수 없었습니다.
- 다행스럽게도 엉뚱한 이미지가 들어와있어도 잠깐 위아래로 스크롤하다 돌아오면 정상적인 이미지로 변경된걸 확인하였습니다.
- 결론적으로 이 문제는 prepareForReuse()로 초기화해주면 해결이 될거라 생각했는데 아니어서 어떻게 해결할수 있을까 생각해보았는데 답이 나오지 않네요..ㅎㅎ 혹시 조그만 힌트라도 알려주신다면 정말 감사합니다..🙏

3. 메모리 캐시도 함께 추가해 주셨으면 좋겠어요 :)
메모리 캐시도 함께 추가했습니다!

|앱 처음 실행했을때|앱 다시 실행했을때|
|:--:|:--:|
|![networkandmemory](https://user-images.githubusercontent.com/96489602/205856689-dbb21584-19d7-4cae-9e57-8ed76d160127.gif)|![diskandMemory](https://user-images.githubusercontent.com/96489602/205856739-4f8c44cf-fe36-4112-b871-8aa32f94628f.gif)|


