728x90

전체 글 341

RxSwift Subject 이해하기

👨🏻‍💻 RxSwift - Subject 이해하기RxSwift Subject 완전 정리 Subject는 Observable이면서 동시에 Observer 역할도 할 수 있는, 조금은 독특한 존재이다.이번 글에서는 Subject가 왜 필요한 지부터, 4가지 종류의 Subject 각각의 특징과 사용법까지 정리해 보겠습니다. Subject란 무엇인가? 일반적인 Obervable은 내부적으로 값을 만들어 흘려보내기만 할 뿐, 외부에서 임의로 값을 주입할 수 없다.하지만 Subject는 다음 두 가지 성질을 동시에 가진다.Observable이므로 subscribe를 통해 값을 구독할 수 있다.Observer이므로 외부에서 onNext(_:), onError(_:), onCompleted()를 호출해 값을 직..

iOS/Swift 2026.08.28

67. 스파르타 코딩 클럽 - 8월 27일 코딩테스트 연습 (코드카타)

❓ 오늘의 문제1. 부분 문자열인지 확인하기부분 문자열이란 문자열에서 연속된 일부분에 해당하는 문자열을 의미합니다. 예를 들어, 문자열 "ana", "ban", "anana", "banana", "n"는 모두 문자열 "banana"의 부분 문자열이지만, "aaa", "bnana", "wxyz"는 모두 "banana"의 부분 문자열이 아닙니다.문자열 my_string과 target이 매개변수로 주어질 때, target이 문자열 my_string의 부분 문자열이라면 1을, 아니라면 0을 return 하는 solution 함수를 작성해 주세요.나의 정답 코드import Foundationfunc solution(_ my_string:String, _ target:String) -> Int { return..

SQLD 기출 문제 CBT 사이트

이번 주 토요일(22일)에 62회 차 SQLD 시험이 예정되어 있다.인스타그램을 보다가 SQLD 기출문제를 풀어볼 수 있는 사이트가 있어서정보 공유차 글을 작성한다. SQLD양파 SQLD양파 — SQLD 3주 합격 루틴제45회~60회 기출 복원 800문항 + 이론 + CBT 모의고사. 회원가입 없이 무료.sqldyangpa.com사이트는 위와 같다.네이버에서 SQLD양파라고 검색해도 접속 가능하다. 기출문제를 풀 수도 있고, AI가 만드는 단일 문제를 푸는 무한 퀴즈도 있고,시험과 동일하게 진행되는 실전 모의고사까지 있다. 기출문제 무한 퀴즈 실전 모의고사 사이트를 보니 3주를 잡고 SQLD 시험에 대비하는 것 같다.나는 시험 5일 전에 보게 되었지만이동 중이거나 남는 자투리 시간에 공부하기 편한 사..

SQLD/SQLD 2026.08.18

WidgetKit과 ActivityKit 이해하기

👨🏻‍💻 WidgetKit과 ActivityKit 이해하기[ 1. WidgetKit ]WidgetKit이란 무엇인가 WidgetKit은 홈 화면, 잠금 화면, StandBy 모드 등에 표시되는 위젯을 만들기 위한 프레임 워크이다.SwiftUI를 기반으로 UI를 구성하며, 앱 본체와는 독립된 익스텐션(Extension) 형태로 동작한다.WidgetKit의 핵심 특징SwiftUI 전용 : WidgetKit은 SwiftUI로만 작성할 수 있다. UIKit 기반 위젯은 만들 수 없다.타임라인 기반 업데이트 : 위젯은 앱처럼 실시간으로 갱신되지 않고, 시스템이 미리 정해진 시점에 스냅샷을 렌더링하는 방식으로 동작한다.여러 크기 지원 : systemSmall, systemMedium, systemLarge,..

iOS/Swift 2026.08.17

에그타임 #22 - Unit Test 하기 (TCA TestStore)

👨🏻‍💻 오늘의 작업Unit Test란?앱을 통째로 실행하지 않고, 함수·로직 같은 가장 작은 단위(unit)를 따로 떼어내"이 입력엔 이 결과가 나와야 한다"를 코드로 검증하는 테스트이다.UI를 띄우거나 사람이 직접 눌러볼 필요 없이, 로직만 빠르게 확인할 수 있다. Unit Test의 장점1. 손으로 반복 검증하던 걸 자동화한다.에그타임에서 "타이머를 시작하고 → 일시정지하고 → 재개하면 남은 시간이 맞나?"를 매번 앱 켜서 6분 기다리며 확인할 수는 없다.유닛테스트는 이걸 1초도 안 걸려 자동으로 검증할 수 있다. 2. 회귀(regression)를 막아준다.가장 큰 이유이다. 새 기능을 넣거나 리팩터링 할 때, 예전에 잘 되던 가능이 조용히 깨지는 것을 즉시 잡아준다.테스트가 없으면 "이거 ..

에그타임 #21 - 화면 세로 모드 고정 및 오디오 세션 복구, 작은 화면 레이아웃 개선

👨🏻‍💻 오늘의 작업[ 1. 화면 세로 모드 고정 ] 앱을 실행시킨 후 화면을 가로 또는 세로로 돌리게 되면화면 레이아웃이 깨지는 문제를 해결하기 위해세로 모드로 화면을 고정되게 수정하였다. [ 2. 오디오 세션 복구 ] 기존에는 사용자가 음악을 듣고 있다가 타이머가 울리면 음악의 재생이 중지되고,타이머의 종료음이 울린 뒤 아무런 동작이 없었다.해당 문제를 해결하기 위해사용자가 음악을 듣고 있다가 타이머가 울리게 되면타이머 종료음이 재생되고, 재생이 끝나면 자동으로 듣고 있던 음악을 다시 재생하도록 수정했다. [ 3. 작은 화면 레이아웃 개선 ] 현재 코드에서는 아이폰 13 mini를 기준으로 디자인된 화면을다른 사이즈의 기기에서 기기 높이 비율로 확대하는 방법으로 레이아웃을 표시했다. Pro..

에그타임 #20 - 타이머 화면 레이아웃 리펙터링 및 26.0.1 업데이트

👨🏻‍💻 오늘의 작업[ 1. 타이머 화면 레이아웃 리펙터링 ] 앱을 배포하고 아이패드로 앱을 다운로드하여보았을 때현재 레이아웃 구현의 방식으로는 요소가 겹치고 어긋나는 문제를 발견하였다. 따라서 다양한 기기에서 동일한 레이아웃을 표시하기 위해타이머 화면의 레이아웃 구현 방식을 리펙터링하기로 하였다. 바뀐 점 1. 절대 좌표 → 자연스러운 흐름(VStack) 레이아웃ZStack + topLeading + padding(.top) 방식을 버리고 VStack으로 요소를 위에서 아래로 쌓았다.좌표가 아니라 관계로 표현되니, 요소 하나를 바꿔도 나머지가 자동으로 밀려난다. 2. 개별 요소 곱셉 → 전체 콘텐츠 일괄 확대이전엔 요소마다 x scale을 곱했지만, 이제는 VStack 하나에 .scaleEffe..

728x90