🩵 오늘 한 일
✔️ 벌써 1월 말일이라니...
그렇습니다.
오늘은 1월 31일...
벌써~ 1월이 끝났습니다..
생각보다 꾸준히, 열심히 하고 있어서 스스로가 대단하네요. 와중에 2달밖에 안남아서 두렵기도...
두달, 석달 뒤의 저는 무엇을 하고 있을까요?
여전히 컴퓨터 앞에 열두시간 앉아서 포폴을 만들고 있을까요?
사실 이번 팀에서.. 포폴로 쓸 만한 프로젝트를 할 수 있을 것 같아서 기대중입니다 ㅎㅎ
✔️ 이미지 로더 이슈, 테이블뷰 셀 재사용
https://yy-dev.tistory.com/126
테이블 뷰 재사용되는 시점에 imageview.image가 제대로 세팅되지 않는 문제가 있었는데요
처음에는 재사용할 때 이미지가 초기화가 되고있지 않나? 싶어서 prepareForReuse 메서드를 세팅했었습니다
안되더군요
그래서 직감했죠.. 이건 내가 만든 ImageLoader의 문제로구나!!!
딱 결과만 놓고 말하자면,
이미지로더가 UIImageView를 직접 받아와서 세팅해주고 있었고
이것 때문에 비동기 이미지 로딩이 끝나지 않은 시점에 이전 이미지 데이터를 사용하여 셀이 재사용되는 문제가 있었습니다
그래서 해당하는 데이터가 아닌, 엉뚱한 데이터 이미지를 끌어와서 표시하는 생각보다 크리티컬한 이슈였습니다
일단.. 이미지로더는 단일책임원책을 지키지 않았구요
게다가 UIImageView를 직접 받아오는 것이 강한 순환참조를 발생시킬 수 있다는 것도 알았기 때문에 클라이언트 코드를 전부 분리해주었어요
그런 다음 UIImage를 생성하여 그것을 반환해주는 로직으로 변경했습니다
커스텀 테이블셀에서는 prepareForReuse 메서드를 사용하여 혹시 모를 이미지 데이터를 지워주었고,
cell.tag를 설정하여 현재 셀 상태를 추적하고, 이미지 로딩이 완료되었을 때만 UI 업데이트를 해주기 위해 클로저에 로직을 작성했습니다
이미지 로딩이 완료된 후에 클라이언트에게 결과를 전달하는 방식 또한 Result 타입을 사용하는 것으로 변경해보았습니다
이렇게 해서 잘 해결이 되었습니다!!
이번 기회로 단일책임원칙의 중요성을 다시 한번 상기할 수 있었고,
커스텀 셀의 초기화는 어떻게 하는지 배웠습니다.
✔️ CoreData Entity Relationship
솔직히 너무 어렵습니다!!!!
CRUD까지는 이해할 수 있는데 관계 형성은 대체 뭔지 감도 잡히지가 않아서 튜터님께 여쭤보았지요
평범하게 우리가 매일 하던 데이터 타입 생성하는 것을 생각해 봐라..
person과 pet은 각각 다른 데이터지만,
owner라는 프로퍼티를 통해 관계를 갖게될 수 있지 않느냐..
그것과 아주 유사한 개념이다..!!
듣고보니 진짜 그렇더군요. 덕분에 개념하나는 확실히 이해가 갔습니다
이제 내일은.. 과제 제출일이라 아마 완성은 못할거같지만ㅎㅎ Relationship을 좀 사용해보면서 더 깊게 파봐야겠습니다
'TIL' 카테고리의 다른 글
[TIL] 24.02.05 (1) | 2024.02.05 |
---|---|
[TIL] 24.02.02 (1) | 2024.02.02 |
24.01.30 - AVPlayerViewControleller Memory Leak (1) | 2024.01.30 |
[WIL] 24.01.05 - 24.01.23 (1) | 2024.01.23 |
[TIL] 24.01.04 (0) | 2024.01.04 |