개발하는거북이 어플 만들었어요

전체 글 24

[Swift / OOP] 의존성 역전 원칙(DIP)과 의존성 주입(DI)

개발을 하며, 객체 지향 프로그래밍(OOP)와 SOLID 원칙에 대해서 많이 들어보았을 것이다. 나 역시 그랬고.최근 모 회사에서 면접을 진행할 때, SOLID 원칙 중 D를 담당하는 DIP(Dependency Inversion Principle)에 대한 꼬리질문이 나오자 제대로 답변을 하지 못했었다. 이번 기회에 DIP 그리고 평소 막연하게만 알고 있었던 의존성 주입(DI)에 대해 공부하고, 정리해 보았다. OOP와 SOLID 원칙?OOP는 이름으로부터 유추할 수 있듯, '코드를 객체 단위로 구조화하는 관점'이다. 캡슐화/추상화/상속/다형성 총 네가지 특징을 가진다.객체 단위 구조화가 이루어지므로, 객체 간 역할이 분리되어 변경 영향 범위가 줄고, 기능 확장과 테스트가 용이해진다. SOLID 원칙은 쉽..

알고리즘/Swift 2026.02.12

[iOS/SwiftUI] SwiftUI에서 gif 파일 재생하기

캐릭터 요소가 가미된 게이미피케이션 iOS 프로젝트를 만들고 있다.움직이는 캐릭터를 구현하기 위해 디자이너 측에서 전달해준 gif 파일을 루프 형태로 재생하기로 하였다.Lottie iOS, 이미지 시퀀스 등 다른 여러 방식에 대해서도 생각해 보았으나각각의 형태에 장단점이 존재하였고, 결국 가장 친숙한 gif 형태로 작업하는 것으로 최종 결정하였다. 다만, SwiftUI의 기본 Image View에서는 gif 재생을 지원하지 않는다.따라서 UIKit View를 SwiftUI에서 이용 가능한 프로토콜인 UIViewRepresentable을 채택해야 하고,이번 시간에는 해당 방법을 통해 SwiftUI에서 gif 파일을 재생하는 방법에 대해 알아보고자 한다. UIImageViewhttps://developer...

앱 개발/iOS 2025.11.08

[iOS/SwiftUI] 네이버맵 SDK 연동: 위치모드 초기 설정이 정상적으로 적용되지 않는 현상 수정

iOS 프로젝트 진행 중, 걷기/달리기 중 실시간으로 사용자의 위치를 표시해 주는 미니맵 요소가 필요하였다.이를 위해 네이버맵 SDK를 사용하기로 결정하였고 이를 연동하는 과정 중, 문제가 발생하였다.발생한 문제 및 해결한 방식에 대해 다뤄보고자 한다. 구현 방법1. 네이버 클라우드 플랫폼 등록 및 XCode 세팅https://navermaps.github.io/ios-map-sdk/guide-ko/1.html 시작하기 · NAVER Map iOS SDKNo results matching ""navermaps.github.io공식 문서의 시작하기 탭에서 잘 설명되어 있다. 아래에 약간 헷갈릴수도 있는 부분들을 추가로 정리해 보았다.본인의 경우, Swift Package Manager를 통해 의존성을 추가..

앱 개발/iOS 2025.11.02

[iOS/SwiftUI] Animated Widget 만들기

몇몇 팀원 분들과 함께, 최근 앱을 하나 만들고 있다.수면, 식습관, 운동 데이터를 분석하여, 나만의 캐릭터를 육성하는 게임적인 요소가 가미된 앱이다. 아무래도 '캐릭터'가 중요하다 보니 이를 다양한 방면에서 표현하여 캐릭터에 대한 몰입도를 높이고 싶었고, 그 중 하나가 위젯 요소였다.움직이는 캐릭터 위젯을 만들고 싶었고, 이를 구현하는 신기한 방법이 있어, 한번 소개해보고자 한다. 아래 영상에서의 개념을 응용하였으니, 이를 참고하면 이해가 한결 편할 것이다. 그럼 시작해보자!https://www.youtube.com/watch?v=NdJ_y1c_j_I&t=7s 위젯 내에 움직이는 애니메이션을 구현할 수 있을까?https://developer.apple.com/documentation/widgetkit..

앱 개발/iOS 2025.08.22

[iOS/Swift] View의 절대 위치 측정하기(+원하는 방향으로 이동시키기)

Swift로 개발 중에 특정 상황에서 A 요소를 B 요소의 위치 쪽으로 옮겨야할 일이 생겼다.이를 위해 A, B 두 요소의 절대 위치를 파악하여 A 요소를 이동시켜야 했는데,해당 과정에서 GeometryReader의 추가적인 활용법을 알게 되어 이를 정리하고자 한다. 구현 필요 사항import SwiftUIstruct ContentView: View { var body: some View { VStack { HStack { Rectangle() .foregroundStyle(.blue) .frame(width: 100, height: 100) Sp..

앱 개발/iOS 2025.07.26

[iOS] 딥 링킹 환경에서 콘솔 출력하기

개요종종 딥 링킹 등을 통해 외부 환경에서 앱을 실행하고, 그에 따른 결과를 디버깅해야 할 때가 있다.그러나 기본적으로 XCode에서는 앱 빌드 → 실행 프로세스를 통해서만 XCode 디버깅 모드와 연결되며, 이후 어플리케이션 종료 시 해당 연결이 끊기게 된다.즉, 일반적으로는 외부 환경에서 어플리케이션 실행 시 XCode가 이를 감지하지 못해, 콘솔 출력을 포함한 디버깅이 불가능하다.어떻게 문제를 해결할 수 있을 지에 대해 알아보자. 해결책1. Launch Option 변경Launch Option을 확인하면, 처음에는 ‘Automatically’로 설정되어 있을 것이다. 이를 ‘Wait for the executable to be launched’로 변경한다.해당 옵션으로 변경 시 CMD + R 이후 ..

앱 개발/iOS 2025.03.25

[iOS] 원격 푸시 알림 정리: FCM, APNs

개요이전에 React Native를 이용해 크로스플랫폼으로 어플을 제작한 경험이 있는데, 이 때는 FCM(Firebase Cloud Messaging) 서비스를 통해 원격 푸시 알림을 구현했었다. 누군가가 나를 초대했을 때 어플에 접속 중이 아니더라도 알림을 보여주어, 유저 리텐션 높이기에 긍정적인 영향을 주었던 기억이 난다.최근 회사에서는 네이티브 개발을 하면서 똑같이 원격 푸시 알림을 구현하는 업무를 맡게 되었는데, 네이티브의 경우 내가 알던 방식과 구현 방식이 살짝 달랐다.네이티브로 개발 시에는 어떤 방식으로 원격 푸시 알림을 구현할 수 있는지에 대해 조사해 보았다. 푸시 알림의 종류원격 푸시 알림에 대해 알아보기에 앞서, 먼저 푸시 알림의 종류에는 어떤 것들이 있는지부터 알아보자.푸시 알림은 ‘트..

앱 개발/iOS 2025.03.25

[GitHub] Issue의 개념, Issue 템플릿 생성하기

GitHub에는 협업을 돕기 위한 다양한 기능들이 있으며, 그 중 하나가 바로 Issue 기능이다.일반적으로 Issue는 ‘문제점’으로 번역되지만, 실제로는 단순한 버그 신고뿐만 아니라 기능 개발, 작업 요청, 개선 제안 등 개발과 관련된 다양한 항목을 관리하는 데 범용적으로 사용된다. 이러한 관리를 통해 프로젝트를 더욱 체계적으로 관리할 수 있다.이번 글에서는 실제 개발 과정에서 Issue를 어떻게 효과적으로 활용할 수 있는지, 그리고 Issue를 보다 간편하게 생성할 수 있도록 도와주는 Issue 템플릿 기능에 대해 알아보고자 한다.GitHub Issue란?GitHub Issue는 GitHub 저장소(repository)에서 작업 항목을 추적하고 협업하기 위한 도구이다. 작업 항목이라고 한다면, 버그..

GitHub 2025.03.23

[iOS] 앱 생애주기 및 AppDelegate, SceneDelegate

개요iOS에서의 앱 생명주기는, iOS 13 전후로 작동 방식이 다르다.iOS 13부터는 앱 하나를 여러 개의 창으로 띄우는 멀티 윈도우 기능을 지원하게 되면서 생명주기 관리 방식이 기존보다 더 세분화되었으며, 이에 따라 앱의 생명주기 관리 구조 역시 변경되었다.앱 생명주기에 대해 설명하고 멀티 윈도우 도입 전후의 차이점을 비교하여, 실제로 이를 어떻게 핸들링할 수 있는지 설명하고자 한다. 목차앱의 상태 및 생명주기멀티 윈도우 도입에 따른 변화iOS 13 이전과 이후 변화된 생명주기 관리 방식iOS 13 이전과 이후, 생명주기를 고려한 iOS 호환성을 유지하는 방법 앱의 상태 및 생명주기앱의 생명주기란, 앱의 상태가 전환되는 일련의 과정을 말한다. 앱 상태의 경우 크게는 세 가지, 더 세분화된다면 다섯 ..

앱 개발/iOS 2025.03.10

[알고리즘 with Swift] VSCode에서 단일 파일 실행환경 구성하기

최근 iOS 개발자가 되기 위한 여정을 시작하고, Swift 문법 공부를 시작했다.최근 몇몇 기업에서는 코딩 테스트 자체를 모집 분야의 주 언어로만 가능하도록 제한하는 경향이 있다고 하여, PS 역시 기존 C++에서 Swift로 변경하면 좋을 것 같았다. 이에 내가 구성한 VSCode 내에서의 단일 파일 실행 환경 세팅 및, 자잘한 팁에 대해 공유해보고자 한다. 단일 Swift 파일 실행 명령어 XCode 또는 Swift만 설치되어 있다면, 의외로 단일 파일을 실행하는 것은 쉽다. 터미널 환경에서swift [실행할 swift 파일 경로] 명령어만 입력하면 별도의 빌드 과정 없이 단일 파일을 쉽게 실행해볼 수 있다.'그렇다면 단축키를 통해 저 터미널 명령어를 실행하면 되지 않을까?' 라는 생각 하에, VS..

알고리즘/Swift 2025.02.22