새로 올라온 글 보러가기!
-
[iOS] Swift의 UI 작업은 반드시 Main Thread에서 동작해야한다?
Swift의 UI 작업은 Main Thread에서 동작해야한다!아요 개발하다가 한 번쯤 아래와 같은 보라색 경고를 보신 적이 있을 겁니다.해당 상황의 경우에는,"오직 메인 스레드 (main thread only)에서만 사용할 수 있는 UIKit의 속성"을 "다른 스레드에서 접근"했기 때문에 발생했습니다.꼭 아래의 UIViewController 속성이 아니더라도,UIView, UINavigationController 등 UI, 즉 화면을 담당하는 객체 관련 코드가 메인 스레드가 아닌 다른 스레드 접근을 시도할 경우에화면과 동일한 보라색 스레드 경고를 표출하게 될 겁니다.UIKit 공식문서를 들어가봐도 Important 칸에 별도로 강조하면서 설명하고 있습니다."UIKit 클래스는 오직 메인 스레드 혹은 메..
-
[Combine] Combine Operator 완전 정복하기 (4) - Timing and Control Operators
마지막 Combine Operator를 정리해볼 시간입니다!이번 글에서 살펴보게 될 Timing and Control Operators는 delay, debounce, throttle, timeout, retry, catch 등이고요.해당 연산자들을 활용해서 데이터 스트림의 타이밍을 조작하거나, 제어 (잠시 멈추거나 기다리는 등의)할 수 있는 방법을 배우게 될 겁니다.오늘 글을 마무리로, Combine에서 사용할 수 있는 대부분의 Operator는 모두 배웠다고 할 수 있습니다.어여 마지막 고지를 정복하기 위해. 바로 글을 시작해 보죠!그동안 살펴본 Combine Operator가 궁금하다면, 👇🏻아래 링크👇🏻를 참조해주세욧! [Combine] Combine Operator 완전 정복하기 (1) ..
-
[Apple Developer Academy @ POSTECH] #3 - 처음 경험해본 새로운 세계, CBL (Challenge Based Learning)
🍎 Apple Developer Academy @ POSTECH 4기 : Challenge 1 회고 (2025.03.17 - 03.28) [Apple Developer Academy @ POSTECH] #2 - Prelude, 긴 여정을 시작하기 위한🍎 Apple Developer Academy @ POSTECH 4기 : Prelude 회고 (2025.03.10 - 03.14)드디어 포항에 내려왔습니다.4기에 합격하고 아카데미가 시작하기까지 기다릴 때는 그렇게 가지 않던 시간이,막상 포항에 내려오니mini-min-dev.tistory.com CBL (Challenge Based Learning)은 높은 기대 그 이상이었다.첫 주차 Prelude가 끝나고 본격적으로 첫 번째 Challege에 돌입했습니..
-
[WWDC25] Swift Student Challege 지원 과정부터 Winner 선정까지
생일날 찾아온 겹경사!내가 진짜 위너라니. 내가 전 세계 350명 안에 들다니. 내가 위너가 되다니.제가 2025년 스스챌 위너가 되었어요☺️🎉오늘 글에서는 Apple에서 매년 주최하는 Swift Student Challenge에 제가 지원하기까지의 전 과정부터 Winner 선정까지.어떤 점을 준비했고, 무엇을 배울 수 있었는지 등에 대해 기록하는 내용을 준비했습니다! #1. 스스챌 (Swift Student Challenge)이 머시기인데?Swift Student Challenge (줄여서 스스챌이라 부르는)는 Apple에서 전세계의 학생을 대상으로 개최하는 공모전입니다.Apple의 개발 프레임워크 SwiftUI와 교육용 앱인 Playground를 활용해 창의적인 앱을 개발해 제출을 받고 있으며,매년..
블로그 주인장이 추천하는 글 보러가기!
-
[Clean Architecture] OOP의 SOLID 원칙을 Swift의 관점에서 이해하기
0️⃣ OOP(Object-Oriented Programming)와 SOLID 원칙"일단 앱잼 기간 중에 빨리 기능부터 구현하고, 우리 앱잼 끝나면 진짜 리팩토링하자!"단기간에 결과물을 내야하는 솝트 동아리 내의 과제, 합동 세미나, 장기 해커톤 앱잼 같은 곳에서 가장 많이 들었고, 가장 많이 해온 말이다.하지만 해당 기능 개발이 끝나면, 또 다른 기능 개발이 개발자들을 기다리고 있고....또 다른 기능 구현을 우선적으로 하다 보면, 코드 정리나 프로젝트의 구조를 개선하는 일은 후순위가 항상 되기 마련이었다.어쩌면 리팩토링은 평생 동안 목표에 그칠 수밖에 없는 "이룰 수 없는 과제"일지도 모르겠다.그래서 나는 여기서 의문을 하나 가지게 되었다."겉으로 보이지 않는 코드의 퀄리티나 프로그램의 구조를 굳이 ..
-
[Swift] Coordinator & Router & Factory Pattern을 사용한 리팩토링 (1) : 초기 세팅부터 로그인 화면까지
💡 해당 글은 Coordinator Pattern, Router, Factory Method Pattern을 사용한 리팩토링 코드를 설명하는 글입니다!글이 너무 길어져 총 3개로 나누어 글을 올릴 예정이구요, 만약 잘못된 개념이나 개선할 부분, 질문 등이 있다면 댓글로 지적해주시면 빠르게 남겨드리도록 하겠습니다 ^__^1️⃣ Coordinator & Router & Factory Pattern을 사용한 리팩토링 (1) : 초기 세팅부터 로그인 화면까지2️⃣ Coordinator & Router & Factory Pattern을 사용한 리팩토링 (2) :코디네이터로 탭바 만들기3️⃣ Coordinator & Router & Factory Pattern을 사용한 리팩토링 (3) : 앱 전체 흐름 구성, ..
-
[Combine] Combine 진짜 알기 쉽게 정리해서 올려줄게 (1) - Combine 기초 개념 이해하기
⚠️ 이번 글은 Combine Framework가 처음 소개되었던 WWDC19의 두 세션 Introducing Combine과 Combine in Practice의 예제 을 직접 구현하면서 사용된 Combine 개념들에 대해 집중적으로 소개합니다.이 글에서 소개되지 못한 Combine의 다른 여러 개념들은 Apple Developer Documentation-Combine 글을 참조하길 바랍니다.번역 또는 프로젝트의 목적, 그리고 저의 부족한 이해력 때문에 일부 잘못된 내용이 있을 수 있다는 점. 전제하고 읽어주시면 감사하겠습니다 (잘못된 개념 제보 및 질문 댓글로 얼마든지 환영입니다:) ^__^ 1️⃣ Combine이 뭔데? 왜 공부하는 건데? 언제 쓰는 건데?Combine에 대해 공부하기 전에 우리가..
-
[SPM] Swift 라이브러리를 만들어보자 (1) - Package의 개념과 배포 과정 (feat. Creating Swift Packages)
1. Swift Package와 SPM (Swift Pacakge Manager)Swift Package는 Swift에서 모듈식으로 코드를 관리하고 배포할 수 있도록 제공하는 개념입니다. Swift Package는 단순히 이번 글에서 만들고자 하는 라이브러리뿐만 아니라, 프레임워크, 실행가능한 모듈로서 분리, Swift 매크로 등 다양한 코드 묶음을 만들 수 있는데요.이렇게 작은 묶음으로써 코드를 프로젝트 내에 분리하는 이유는 그 무엇보다 "다른 여러 프로젝트에서 재사용되는 코드를 효율적(의존성 관리, 버전 관리 등)으로 활용할 수 있다는 점"이 가장 큽니다.*흔히 사용하던 서버 통신 라이브러리 Alamofire와 Moya, 이미지 캐싱 라이브러리 Kingfisher, AutoLayout을 도와주는 Sn..
블로그에서 가장 인기가 많은 글이에요!
-
[Apple Developer Academy @ POSTECH] #3 - 처음 경험해본 새로운 세계, CBL (Challenge Based Learning)
🍎 Apple Developer Academy @ POSTECH 4기 : Challenge 1 회고 (2025.03.17 - 03.28) [Apple Developer Academy @ POSTECH] #2 - Prelude, 긴 여정을 시작하기 위한🍎 Apple Developer Academy @ POSTECH 4기 : Prelude 회고 (2025.03.10 - 03.14)드디어 포항에 내려왔습니다.4기에 합격하고 아카데미가 시작하기까지 기다릴 때는 그렇게 가지 않던 시간이,막상 포항에 내려오니mini-min-dev.tistory.com CBL (Challenge Based Learning)은 높은 기대 그 이상이었다.첫 주차 Prelude가 끝나고 본격적으로 첫 번째 Challege에 돌입했습니..
2025.04.05 17:27 -
[Mac] 맥 터미널 기본 사용법을 배워보자
맥북을 사용하는 개발자 중에서 터미널을 사용해보지 않은 개발자가 과연 있을까?터미널(Terminal)은 맥(macOS)에서 지원하는 커맨드 라인 툴(command line tool)이다.개발을 할 때, 기본적인 파일 접근부터 깃(Git) 관리까지 보통 이 터미널에서 명령을 입력하며 진행하는 경우가 많기 때문에 기본적인 터미널 명령어는 어떤 것들이 있는지 알아두어야 할 필요가 있다.그래서 오늘 글에서는 아직 터미널 사용법이 익숙하지 않을 분들을 위해, 내가 자주 사용하는 기준으로 하나씩 명령어를 정리해 보도록 하겠다. (참고로 캡처 화면이 기본 터미널 화면과 다른 이유는, 내 맥북은 다음에 다룰 iTerms2라는 별도의 프로그램을 사용했기 때문이다 ^_^)이 글에서 다루고 있는 명령어 목록이다. 계속 새로..
2022.01.07 17:00 -
[iOS] 기기 방향 (Orientation) 대응기 - 세로모드 (portrait), 가로모드 (landscape), 방향 고정, 분기 처리
기기 방향 (Orientation)에 대한 이해이번 글에서는 애플 기기의 방향 - 세로모드 (portrait) / 가로모드(landscape)에 따른 대응을 고민했던 내용을 소개하고자 합니다.우선, iOS 개발에서 방향은 Orientation이라는 이름으로 정의되어 있습니다.이 방향 (Orientation)은 다시, 애플리케이션 사용자 기기의 물리적 방향을 뜻하는 Device Orientation과 / 앱의 UI가 화면에 표시되는 방향을 뜻하는 Interface Orientation. 두 가지로 구분할 수 있습니다.Orientation을 대응하는 것은 별것 아닌 것 같아 보여도, 생각보다 애플리케이션을 개발하는 데 있어 중요한 영향을 미치는데요.예를 들어 가로 모드 (landscape)에 최적화되어 있는..
2025.02.03 16:06 -
[KakaoSDK] 사업자 번호가 없을 때, 비즈 앱 전환방법을 알아보자
이번에는 짧게 카카오톡 소셜 로그인을 구현할 때, 있었던 한 이슈에 대해서 정리해볼까 한다.(카카오톡 소셜 로그인 정리 글은 아래에👇🏻) [Social Login] 소셜 로그인을 구현해보자! 1탄 - 카카오톡 로그인오늘은 최신 어플이라면, 빠지지 않고 가장 기본적으로 들어가는 기능 "소셜 로그인"에 대해 시리즈로 글을 다루어보려 한다. 오늘은 그 첫 번째로, 카카오톡 간편 로그인에 대해 다뤄보겠다. Kakmini-min-dev.tistory.com문제는 이랬다.나다 앱은 jwt 토큰 서버통신을 할 때, 카카오 유저의 이메일 값을 필수로 넘겨줘야 했기 때문에 - 사용자로부터 이메일 계정을 동의를 받을 때, 필수로 받아야 했다.하지만, 처음 동의 항목을 수정할 때는 아래에서 보이는 것과 같이 카카오계정 ..
2022.01.29 21:04 -
[iOS] Clean Architecture + MVVM + Observable 사용해서 날씨앱 리팩토링하기
⚠️ 해당 글은 Robert C. Martin의 너무도 유명한 책과 Oleh Kudinov라는 분의 Medium 글 Clean Architecture and MVVM on iOS를 참고해서 작성했습니다.번역 또는 프로젝트의 목적, 그리고 저의 부족한 이해력 때문에 일부 잘못된 내용이 있을 수 있다는 점. 전제하고 읽어주시면 감사하겠습니다 (잘못된 개념 제보 및 질문 댓글로 얼마든지 환영입니다:) ^__^ + 아 그리고 글이 조금 깁니다...어쩌다보니.. GitHub - mini-min/Clean-Architecture-iOS: 🍎 날씨앱 클론코딩으로 공부하는 클린 아키텍처 (feat. Robert C. Ma🍎 날씨앱 클론코딩으로 공부하는 클린 아키텍처 (feat. Robert C. Martin) - ..
2024.07.28 11:44