iOS34 🚀 iOS 모달 UI 최적화 - 공통 컴포넌트로 유지보수성 향상하기 📌 문제 상황 모달(SelectionModal)을 개발하면서, 중복되는 코드가 많아 유지보수가 어려운 상황이 발생했다.특히, 타이틀과 닫기 버튼이 있는 헤더 부분과 옵션 리스트를 담는 스크롤 뷰가 여러 모달에서 반복적으로 사용되는 문제가 있었다.👉 비효율적인 코드 구조로 인해 발생한 문제점 • 모달마다 같은 헤더 코드가 중복됨 • 옵션 리스트의 동적 크기 조절이 어려움 • 코드가 길어질수록 유지보수가 어려워짐 • 재사용성이 부족해, 기능 확장 시 수정을 반복해야 함 이를 해결하기 위해 공통 요소를 분리하여 유지보수성을 높이고 중복을 최소화하는 구조로 개선했다.🔍 Step 1: 공통 헤더(ModalHeaderView) 분리 기존에는 SelectionModal 내부에서 타이틀과 닫기 버튼을 직접 추가하.. 2025. 2. 20. 🚀 머플러 앱 리팩토링 - 4. Domain Layer와 서비스 구조 설계 머플러 앱 리팩토링의 여정을 이어가는 이번 포스팅에서는 Domain Layer 설계와 서비스 구조를 어떻게 개선했는지 공유합니다. 이전 글에서는 MVVM 전환 과정에서의 시행착오와 뷰 중심의 플로우 차트 작성, 그리고 구조적 개선의 필요성에 대해 다뤘습니다. 이제 그 과정을 구체화하면서, 머플러 앱의 복잡한 로직을 효율적으로 관리하기 위한 핵심 구조를 설명하겠습니다. 📌 1. 플로우 차트 작성 후, 도메인 설계의 중요성플로우 차트를 그린 후, 가장 중요한 부분이 도메인 로직을 먼저 설계하는 것이라는 결론에 도달했습니다.기존에는 UI와 기능 구현 위주로 개발을 진행했지만, 이번 리팩토링에서는 핵심 비즈니스 로직을 중심으로 설계하는 접근 방식을 채택했습니다.도메인 설계를 진행하면서 놀라웠던 점은, 생각보다.. 2025. 2. 11. 🚀 머플러 리팩토링 - 3. MVVM 전환 과정에서의 고민과 새로운 접근 🚀 머플러 리팩토링 - 2. MVC에서 MVVM으로의 전환 (feat. swiftLint)머플러 리팩토링 - 1. 리팩토링 계획 세우기 (레거시 코드 정리)머플러, 초심으로 돌아가는 설 연휴 프로젝트머플러 앱, 잊혔지만 잊혀지지 않은 첫 프로젝트 약 8개월 전, iOS 앱스토어에 출시한qkrrmsdud.tistory.com 머플러 리팩토링 2에서는 MVVM 아키텍처로 뷰를 전환하는 계획을 세웠지만, 실제로 작업을 진행하면서 많은 시행착오를 겪고 있다는 생각이 들었습니다. 약 4시간의 작업 끝에 뚜렷한 성과를 얻지 못하면서, 과연 지금의 방식이 최선인지 고민하게 되었습니다. 단순한 함수 정리의 한계물론 뷰를 정리하는 것 자체에는 의미가 있습니다. 하지만 전체적인 관점에서 봤을 때, 단순히 함수를 분리하고.. 2025. 2. 10. 🚀 머플러 리팩토링 - 2. MVC에서 MVVM으로의 전환 (feat. swiftLint) 머플러 리팩토링 - 1. 리팩토링 계획 세우기 (레거시 코드 정리)머플러, 초심으로 돌아가는 설 연휴 프로젝트머플러 앱, 잊혔지만 잊혀지지 않은 첫 프로젝트 약 8개월 전, iOS 앱스토어에 출시한 머플러는 UMC 동아리에서 진행했던 첫 번째 iOS 프로젝트였습니qkrrmsdud.tistory.com 머플러 프로젝트의 리팩토링을 진행하면서 가장 먼저 손을 본 것은 아키텍처의 변화였다. 기존 코드베이스는 MVC(Model-View-Controller) 패턴을 따르고 있었지만, 여러 가지 한계를 보였다. 특히 ViewController가 지나치게 비대해지고, 비즈니스 로직과 UI 코드가 섞여 있어 유지보수성과 테스트 용이성이 떨어졌다. 이에 따라 MVVM(Model-View-ViewModel) 패턴으로 전환.. 2025. 2. 1. 🚀 머플러 리팩토링 - 1. 리팩토링 계획 세우기 (레거시 코드 정리) 머플러, 초심으로 돌아가는 설 연휴 프로젝트머플러 앱, 잊혔지만 잊혀지지 않은 첫 프로젝트 약 8개월 전, iOS 앱스토어에 출시한 머플러는 UMC 동아리에서 진행했던 첫 번째 iOS 프로젝트였습니다. 당시 팀에 속한 디자이너분이 멋진 UI 디자qkrrmsdud.tistory.com 레거시 코드, 어디서부터 정리해야 할까? 레거시 코드 정리는 모든 개발자에게 피할 수 없는 숙제다. 유지보수가 어려운 코드가 점점 쌓이면, 결국 기술 부채로 이어지고 프로젝트의 성장 가능성을 제한하게 된다. 이번에 나는 머플러 프로젝트의 레거시 코드를 정리하기로 결심했다. 8개월 전에 UMC 동아리에서 4명의 iOS 개발자가 함께 진행한 프로젝트로, 당시 앱스토어에 성공적으로 출시했지만 이후 관리되지 않은 상태였다. 이제 내.. 2025. 1. 29. 🚀 머플러, 초심으로 돌아가는 설 연휴 프로젝트 머플러 앱, 잊혔지만 잊혀지지 않은 첫 프로젝트 약 8개월 전, iOS 앱스토어에 출시한 머플러는 UMC 동아리에서 진행했던 첫 번째 iOS 프로젝트였습니다. 당시 팀에 속한 디자이너분이 멋진 UI 디자인을 뽑아준 덕분에 애정을 담아 즐겁게 개발할 수 있었습니다. 한 달 간의 iOS 개발 회고록 (24/1/10 -24/2/8)현재 UMC라는 동아리에서 프로젝트 진행하고 있다. 이 동아리는 약 3개월간 스터디를 진행하고 다음 1-2개월 동안은 프로젝트를 완성하기 위해 협업을 한다. 우리 팀은 1월 부터 협업을 하기 시작qkrrmsdud.tistory.com UMC는 약 3개월간의 스터디 이후, 1~2개월 동안 실제 프로젝트를 완성하며 협업을 경험하는 개발 동아리입니다. 우리 팀은 올해 1월부터 본격적.. 2025. 1. 27. [iOS] CoreData 개념 및 활용예제 네이버 부스트캠프 프로젝트를 진행했을 때, 공부했던 CoreData입니다.친절한 설명을 해주는 블로그를 찾지 못해, 혼자 정리해보았습니다. 도움이 되었으면 좋겠습니다! GitHub - boostcampwm-2024/iOS06-molio: 나만의 뮤직 포트폴리오, 몰리오 🎶나만의 뮤직 포트폴리오, 몰리오 🎶. Contribute to boostcampwm-2024/iOS06-molio development by creating an account on GitHub.github.com 1. CoreData란?어플리케이션의 데이터 모델을 관리하고 저장하는 것을 도와주는 iOS의 객체 그래프 관리 프레임 워크SQLite 데이터 베이스의 효율성 + 객체 지향 프로그래밍의 장점 → 복잡한 구조를 쉽게 관리하.. 2025. 1. 9. UIViewController와 관련 개념 정리: HIG, LifeCycle, ContainViewController, AppDelegate, MVC 안녕하세요, 개발감자입니다. 🥔 UIViewController의 개념과, 관련된 다른 개념들을 정리해보았습니다. iOS 개념들의 관계를 이해하는 데에 도움이 되었으면 좋겠습니다.ViewControllerUIViewController란, iOS 앱에서 뷰 계층을 관리하고, 사용자 상호작용을 처리하는 화면 핵심 제어 객체입니다.자세한 내용은 공식 문서를 참고해주세요! 공식 문서를 번역해놓은 글이 있어 첨부합니다. iOS Developr Documentation : UIViewController (UIKit)안녕하세요! 개발감자입니다.🥔 네이버 부스트캠프 9기를 하며 iOS에 대해서 확실하게 배우고 있습니다. 그러던 중, 멘토님께서 " 웬만하면 블로그보다는 공식문서를 참고하는 게 좋다"라고 말qkrrms.. 2024. 10. 6. iOS Developr Documentation : UIViewController (UIKit) 안녕하세요! 개발감자입니다.🥔 네이버 부스트캠프 9기를 하며 iOS에 대해서 확실하게 배우고 있습니다. 그러던 중, 멘토님께서 " 웬만하면 블로그보다는 공식문서를 참고하는 게 좋다"라고 말씀해주셨습니다. 공식 문서가 다 영어라서 조금은 피하게 되었는데요. 이번 기회에 제대로 읽어보자라는 생각으로, 이번 시리즈를 작성하게 되었습니다. 이 게시글은 아래의 링크의 내용을 번역한 내용입니다. 저처럼 영어에 울렁증이 있는 분들께 도움이 되었으면 좋겠습니다. UIViewController | Apple Developer DocumentationAn object that manages a view hierarchy for your UIKit app.developer.apple.com UIViewController.. 2024. 10. 6. [iOS/Xcode] XCTest 활용하여 UnitTest 하기 🍀 XCTest 프레임워크를 활용하는 방안을 구체적으로 설명하겠습니다. XCTest는 Apple의 표준 테스트 프레임워크로, 단위 테스트 및 성능 테스트를 작성하고 실행할 수 있게 해줍니다. 이 프레임워크는 Xcode와 통합되어 있어 iOS, macOS, watchOS, tvOS 애플리케이션을 개발할 때 사용됩니다.1. XCTest 설정 및 기본 사용법1-1. 테스트 타겟 추가프로젝트에 테스트 타겟을 추가하려면 다음 단계를 따릅니다:Xcode에서 프로젝트 선택: 프로젝트 탐색기에서 프로젝트를 선택합니다.테스트 타겟 추가:상단 메뉴에서 File > New > Target을 선택합니다.플랫폼을 선택하고 Unit Testing Bundle을 선택한 후 Next를 클릭합니다.테스트 타겟의 이름을 입력하고 Finis.. 2024. 7. 24. [iOS/swift] 객체 지향 패러다임 구현하기🍀 안녕하세요. 개발감자입니다!네이버 부스트캠프 챌린지를 하며 정리한 내용입니다.객체 지향 패러다임은 무엇인지, swift에서는 어떻게 구현하는지 정리해보았습니다.1. 용어클래스 class객체를 만들어 내기 위한 틀이며, 만들어 낼 객체의 속성과 메서드의 집합을 담아놓은 것class Object { ... }객체 object클래스로부터 만들어지는 실체, 클래스로 선언된 변수를 객체라 함.var object = Object()인스턴스 instance객체가 메모리에 할당이 된 상태이며 런타임에 구동되는 객체, 객체와 같은 의미로 쓰이기도 함.AWS의 클라우드 가상서버라는 의미를 가지기도 함.용어 쉽게 이해하기붕어방 틀에 찍으면, 팥과 밀가루의 값은 다를 수 있다. → ex. 속성, 변수의 값용어 비유클래스붕어빵.. 2024. 7. 22. iOS감자의 파란만장한 로그인 구현기 1. 로그인 구현의 시작 ( feat. 로그인 구현할 때 알아야 할 것들.) 이번 포스팅은 설명을 중심보다는 기록이 중심입니다.로그인을 구현하시는 다른 iOS 개발자분들에게 제 삽질과 기록이 도움이 되길 바라며...🍀 1. 내가 로그인을 하라구..?머플러라는 대형 프로젝트를 진행 중이다.머플러는 소비목표를 달성하게끔 도와주는 iOS 어플로, 담당 역할은 원래 소비등록, 마이페이지 였다.우리 팀의 목표는 최종적으로 앱스토어에 앱을 출시하는 것인데, 로그인을 담당한 분이 중간에 빠지게 되어서 로그인 관련 모든 걸 내가 맡게 되었다. 다른 분들은 맡은 기능을 구현하는데에도 시간이 없으셨기 때문에 어쩔 수 없었던 부분이다. 컴공 졸업생인데 어떻게 로그인을 구현을 안 해봤나? 궁금할 수 있지만, 이 전까지는 프로젝트를 하더라도 출시까지 가는 일이 거의 없었다.거의 모든 프로젝트에서 기능.. 2024. 7. 7. 이전 1 2 3 다음