본문 바로가기

TIL

[TID] #3 - 나는 오늘도 개발한다? 내가 오늘 개발한 것?

꽤 오래전에 TIL을 열심히 써보려다가... 깃헙 이슈에 기록하는 것이 더 좋은 것 같아서 그만뒀었는데...!

깃헙 이슈가 가독성이 좋고 주제별로 정리해놓기가 편해서 최근에는 그렇게 하고 있었고, 정리를 아예 제대로 하고 싶은 내용은 TIL보다는 블로그에 정제해서 올리고 싶었기에 TIL의 필요성을 느끼지 못하고 있었습니다.

 

그런데 갑자기 TIL에 왜 돌아왔냐...? 그리고 TID는 무엇이냐 하면!

 

요약하면 기록의 방식을 조금 바꿔보려 합니다! 이전에 #2까지지만 쓰면서 느꼈던 점은 정제된 지식을 올려야 하는 다른 카테고리의 글과는 달리 생각, 느낀점, 어려웠던 점, 더 공부하고 싶던 점을 마음 편하게 기록할 수 있었다는 점입니다! 덕분에 그 시기의 내가 어떤 것을 공부하고 어떤 지식이 부족했으며, 이후로는 어떻게 공부해야 하겠다는 '성찰'을 하기에 적합했는데요~!

 

어제도 여느때처럼 nomad로 생활하다가 한 현직자님의 글을 보고, 지식을 정제하여 올리는 것이 아니라 내가 개발을 공부하면서 겪은 과정을 다른 사람 시선 신경쓰지 않고 나를 위해 정리하고 싶다는 생각이 들었습니다. 이번에는 저번까지의 TIL에서처럼 깊이 정리하지는 않을 것이고, 어떤 문제에 봉착했고 이를 어떻게 해결했는지, 왜 그렇게 생각했는지 정도만 기록하려고 합니다. 그리고 그 과정에서 찾아본 레퍼런스들을 살짝 첨부해두려고 하구요..! 그래서 나중에 같은 문제에 도달했을 때 과거와 어떻게 다르게 사고하고 해결하는지 비교해볼 수도 있을 것 같고, 과거의 해결법에서 생각지못한 해결책을 다시 만들어낼 수 있을 것 같기도 하고...! 여튼 그렇습니다.

 

그래서 TID는 Today I Develop(ed)인데, '내가 오늘 개발한 것' 또는 '오늘도 나는 개발한다' 정도가 되겠네요 하하. 사실 'Today I Deep dived', 'Today I Deeply appreicated' 같은 의미도 집어넣고 싶지만 네이밍보다는 꾸준한 실천이 중요하겠죠..화이팅! 마지막으로 저에게 하고 싶은 말은.

두서없이 쓰자. 꾸준함이 성공이다.

 

- 프로젝트에서 ImageSlide를 구현해야했다. 깃헙에 ImageSlideShow를 구현한 레포가 있어서 이를 그대로 가져가볼까 생각했는데 라이센스 문제도 있고 해서 fork를 한 다음 Custom하는 편이 좋겠다고 생각했다. 맘 같아선 처음부터 끝까지 구현하고 싶은데 욕심으로는 최근 공부하는 Combine 프레임워크로 구현하고 싶어서 일단 라이브러리로 구현하고 추후에 커스텀하기로 했다. 그리고 NSCache, Conquerency 등을 조금 더 확실히 알고 나서 구현하고 싶은 마음도 있어서 패스!했다.

클래스 메서드로 presentFrom을 구현하고 configure 클로저를 받아서 뷰컨트롤러를 생성한 이후에 configure해주는 형식의 메서드가 있었다. 흥미롭다! 우리 앱은 push를 해야 하는데 저렇게 했더니 NavigationController의 Property들을 override해야 하는 경우가 있어서 조금 귀찮아졌다. 커스텀 트랜지션을 하는게 나을지 그냥 아예 클로저로 해당 프로퍼티들을 조정해줄지 고민이다.

 

그리고 생각지 못한 수확이 있었다.

위 사진을 보면 open, public으로 선언된 클로저나 프로퍼티들이 잔뜩 있는데, 이렇게 한 의미를 생각해보면서 open과 public을 언제 써야하는지 감을 잡을 수 있었다. 최근에 tuist로 모듈화된 프로젝트를 2개 정도 진행하고 있어서인지 관점이 조금은 넓어진 것 같다. public의 경우에는 단순히 외부의 할당을 받아서 실행하는 경우에 사용하고, open은 클래스의 내부 구현에서 필수적으로 사용되어 명세가 확실한 속성들에 사용된다. 물론 지극히 한정적인 사용처중에 하나이겠지만..! override와 단순 할당에 대해 조금 더 공부해보자!

 

-> 고민 끝에 커스텀 트랜지션을 쓰기로 했다. 라이브러리의 기존 구현을 크게 뜯어고치고 싶지 않았고, 트랜지션을 제대로 구현해본 적이 없기에 공부도 할겸 결정했다! 

-> https://www.swiftpal.io/articles/custom-transition-in-swift-with-present-view-controller-non-interactive 해당 링크에서 가져왔고, navi push처럼 구현하려 했기에 첫 번째 뷰는 움직이지 않도록 수정했다