TIL - 2024.03.22 금요일 (개인프로젝트 19일차)

· 성취/개선/학습한 내용 🏆

  • Realm Object Error
  • CollectionViewLayout InvalidLayout
  • PerformBatchUpdates

· 경험한 이슈 😫

  • CollectionView의 마지막 index 요소를 삭제하면 realm object가 delete 됐다는 에러가 발생을 했다. 이 문제는 보통 먼저 관련된 것들을 삭제하고 realm에서 지워주지 않아서 발생하거나, 캡처가 되어있는데 지워서 발생한다. (후자는 오늘 알게 되었다) 그래서 관련 코드를 들여다봐도 순서대로 지워주고 난 후 realm에서 제거해 주는데도 에러가 계속 발생하는 문제가 있었다. 그래서 이미지를 가져오는 클로저의 weak self를 쓰니 문제가 해결되었다. 이런 측면에서 보았을 때 MVVM의 가장 큰 어려운 점 중의 하나가 바로 비즈니스 로직을 분리하다 보니 클로저를 많이 사용해야 하고 그로 인해 ARC도 신경 써야 한다는 점이다. 
  • 또 위의 문제를 해결하고 나니 중간 index의 요소를 삭제하면 다른 요소가 화면에 나타나야하는데 그러지 않고 건드려줘야 나타나는 버그가 발생했다. 결론적으로 이 버그는 CollectionViewPagingLayout의 특수성 때문에 발생하는 것 같은데, 다른 컬렉션뷰와는 달리 한 번에 하나의 셀만 보여주는 특징이 있기 때문이다. 이 버그의 해결 방법은 PerfonBatchUpdate와 invalidLayout이라는 메서드를 활용해서 자연스럽게 애니메이션이 나오게 설정해 주고, 레이아웃을 제대로 잡아주게 설정해줘야 한다.

·  모르는 부분???? 🥺

  • Realm을 사용하는데 initial data를 어떻게 추가해야 할지 모르겠다. 이게 무슨 말이냐면 내 앱이 퀴즈앱이라고 가정한다면 그 퀴즈앱에 기본적인 문제가 앱을 처음 실행했을 때부터 퀴즈가 2~3개 정도 있으면 좋겠다. 그런데 이 데이터가 양이 좀 많아서 하나하나 코드로 치기엔 귀찮은데, 코드를 통해 저장하는 파일로 바꾸는 그런 방법이 없는지 궁금하다.

· 기술적으로 어려웠던 부분 😵😵‍💫

  • 내비게이션 바 왼쪽에 로고 이미지를 넣고, 또 타이틀은 중간에 둬야 하는데 어떻게 해야 할지 모르겠다. 

· 생각보다 덜/더 걸리는 작업과 그 이유  😱/🥴

  • 위에서 언급한 경험한 이슈 중 CollectionView 마지막 index 삭제 시 앱이 터지는 문제를 해결하는데 생각보다 오래 걸렸다. 정확히 어떤 부분에서 앱이 터지는지 처음에는 찾기가 어려웠고, 그래서 print를 각 줄마다 사용해서 위치를 파악했다. 또 문제가 발생하는 곳에서 어떤 이유로 그러는지 여러번 바꿔보느라 시간이 더 오래걸렸다.

· 느낀 점 🤩

 출시를 위한 1.0 버전이 드디어 완성되었다. 1.0이라서 아직 부족하고 추가적으로 업데이트돼야 할 기능들도 있지만, 내 이름으로 처음 출시하는 앱이기도 하고 맥과 아이패드 앱만 쭉 하던 내 개발자 인생에 처음으로 만든 아이폰 앱이라 조금 더 특별한 것 같다. 개인적으로는 유저가 많아져서 광고도 붙여보고 싶다!!