sookim-1

번호 : 016, 작성일자: 2024-05-20

2024.05.13 ~ 2024.05.19

🚨 Socket Cluster


Socket Cluster란 Socket 통신을 지원해주는 iOS 라이브러리다. 해당 라이브러리는 PubSub기능을 지원한다. iOS앱에서는 백그라운드로 이동하는 경우 Socket연결을 보장하지 않기 때문에 해제하는 것을 권장한다. 그러므로, 다시 Active상태가 되었을 때 Socket연결을 시도한다. 이런 운영체제의 환경으로 인하여, 재연결을 시도할 때 수신하지 못한 메시지가 전달되지 않거나 앱의 특정상태에서는 백그라운드에서도 Socket연결을 해제하지 않아야하는데 해제되는 경우를 대비해야 한다.

  1. SocketCluster에서 지원하는 setBackgroundQueue메서드를 이용하여 메인스레드에 영향을 주지않도록 변경했다.
  2. 재연결시도하는 Timer를 시작할때 재연결이 완료되기 전까지의 시간에 대응하기 위해 다른 HTTP를 호출하여 대응했다. 또한, Timer는 백그라운드스레드에서 동작하지만 특정시간에 호출되는 코드는 메인스레드에서 동작하도록 했다.
  3. 채널 구독을 한 후 해제를 적절히 하지 않으면 메모리누수가 발생할 수 있어서 채널의 구독시점과 구독해제시점을 명확하게 지정하여 처리했다.

⚙️ Tuist


Tuist는 프로젝트 구조에 대한 복잡성을 제거하여 Xcode프로젝트를 쉽게 처리할 수 있도록 하는 것을 목표로 하는 도구입니다.

iOS 개발자가 소수인 경우나, Objective-C라이브러리 중 SPM을 지원하지도 않는 라이브러리가 있는 경우 등인 경우 gitattribute기능을 활용하여 Xcode프로젝트파일 충돌에 대한 대응을 진행할 수 있다.

하지만 버전이 발전함에 따라 Tuist에서도 Objective-C SPM을 지원하지 않는 라이브러리에 대한 대응하는 방법들이 존재해서 검토를 해보았다.

지난 주는 기존의 토이프로젝트를 Tuist로 변경하는 작업을 진행해보았다. 3버전과 4버전의 코드와 tuist 명령어가 매우 달라서 처음 버전 설정을 명확히 지정해야겠다.

🧹 Clean Architecture


토이프로젝트에서 아키텍처패턴을 적용하기 위해서 Clean Architecture에 대한 내용을 공부했다.

Clean Code 문서를 먼저 읽어보고 iOS에서 Clean Architecture를 적용한 프로젝트를 분석했다.

Clean Architecture는 역할에 따라 레이어를 분리하고 각 레이어는 종속성패턴을 지켜 영향도를 제거하도록 해주는 아키텍처패턴이다.

여러 장점들에 대해서 생각해보았고 티스토리블로그에 관련 글을 작성했다.

🙋🏻‍♂️ 기타 사항


  1. 그동안 작성한 이력서를 검토해보았는데, 내가 작업한 내용을 더 가독성이 좋도록 보정했다.
태그: