번호 : 016, 작성일자: 2024-05-20
2024.05.13 ~ 2024.05.19
🚨 Socket Cluster
Socket Cluster란 Socket 통신을 지원해주는 iOS 라이브러리다. 해당 라이브러리는 PubSub기능을 지원한다. iOS앱에서는 백그라운드로 이동하는 경우 Socket연결을 보장하지 않기 때문에 해제하는 것을 권장한다. 그러므로, 다시 Active상태가 되었을 때 Socket연결을 시도한다. 이런 운영체제의 환경으로 인하여, 재연결을 시도할 때 수신하지 못한 메시지가 전달되지 않거나 앱의 특정상태에서는 백그라운드에서도 Socket연결을 해제하지 않아야하는데 해제되는 경우를 대비해야 한다.
- SocketCluster에서 지원하는 setBackgroundQueue메서드를 이용하여 메인스레드에 영향을 주지않도록 변경했다.
- 재연결시도하는 Timer를 시작할때 재연결이 완료되기 전까지의 시간에 대응하기 위해 다른 HTTP를 호출하여 대응했다. 또한, Timer는 백그라운드스레드에서 동작하지만 특정시간에 호출되는 코드는 메인스레드에서 동작하도록 했다.
- 채널 구독을 한 후 해제를 적절히 하지 않으면 메모리누수가 발생할 수 있어서 채널의 구독시점과 구독해제시점을 명확하게 지정하여 처리했다.
⚙️ 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는 역할에 따라 레이어를 분리하고 각 레이어는 종속성패턴을 지켜 영향도를 제거하도록 해주는 아키텍처패턴이다.
여러 장점들에 대해서 생각해보았고 티스토리블로그에 관련 글을 작성했다.
🙋🏻♂️ 기타 사항
- 그동안 작성한 이력서를 검토해보았는데, 내가 작업한 내용을 더 가독성이 좋도록 보정했다.