Skip to content

yuzzin0121/Mapmo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

맵모 - 위치 기반 추억 메모장




Static Badge

한줄 소개

맵모는 방문했던 위치에 대해 이미지, 날짜, 메모를 남겨 차트, 캘린더, 지도를 통해 탐색할 수 있는 위치 기반 메모 앱입니다.

프로젝트 개발

  • 개발 인원: iOS 1인 개발
  • 개발 기간: 2주 (2024.03.10 ~ 2024.03.24)
  • 개발 환경: 최소 버전 16.0 / 세로 모드 / 아이폰용 / 다크모드

스크린샷

🔍 메모

지도 탐색 좋아요한 맵모 캘린더 탐색 맵모 상세화면
메모 생성 메모 삭제 메모 좋아요 카테고리 추가

핵심 기능

  • 메모 | 생성 / 수정 / 삭제 / 조회 / 좋아요
  • 장소 검색
  • 탐색 | 지도 화면 / 캘린더 화면 / 좋아요
  • 카테고리 추가

주요 기술

Framework - UIKit
Pattern - MVVM / Singleton / Delegate / Repository
Network - Alamofire / Codable
Database - Realm
OpenSource - SnapKit / ToastSwift / TapMan / FSCalendar / IQKeyboardManagerSwift / Naver Map SDK / FloatingPanel / Firebase Analytics / Firebase Crashlytics
Etc - Custom Observable / CoreLocation


기술 설명

Alamofire

  • Router 패턴과 Generic을 적용하여 API 요청과 관련된 로직을 캡슐화

Realm

  • writeAsync를 사용하여 쓰기 트랜잭션을 비동기적으로 수행
  • Realm List를 활용하여 To Many Relationship 구현
  • Repository 패턴을 적용하여 CRUD에 대한 유지보수성 및 확장성 향상

Etc

  • UIGraphicsImageRenderer을 통해 커스텀 뷰 마커 구현
  • MVVM과 Custom Observable을 구현하여 비즈니스 로직과 UI 코드 분리
  • NWPathMonitor를 통해 네트워크 단절 상황 대응
  • Firebase Analytics와 Crashlytics를 활용하여 사용자 이탈지점 및 충돌 데이터 수집을 통해 앱의 안정성 향상
  • final 키워드와 접근제어자를 통해 컴파일 최적화 달성

트러블슈팅

1. 많은 realm 트랙잭션을 처리할 때 UI반응성이 저하

해결방안

  • writeAsync를 사용하여 비동기적으로 쓰기 작업을 수행
image

2. Naver Map SDK는 마커의 모양을 UIImage 타입만 가능하기 때문에 커스텀뷰로 마커를 사용하는 방법에 대한 고민

해결 방안

  • UIGraphicsImageRenderer의 image 메서드를 사용하여 Custom View를 UIImage 객체로 변환

image
image

3. 강한 참조로 인한 메모리 누수 문제 발생

  • 메모리 그래프를 통해 메모리가 누수되는 문제 확인
    해결 방안
  • weak 키워드를 통해 객체를 약한 참조 해줌으로써 메모리 누수 해결
해결 전 해결 후

About

위치 기반 메모 앱

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published