본문 바로가기

SWIFT8

Xcode Configuration 늪에서 빠져나오기: 관습을 버리고 코드 기반 분기로 갈아타야 하는 이유 iOS 프로젝트를 운영하다 보면 개발, 스테이징, 운영 등 다양한 환경에 대응해야 합니다.이때 가장 손쉬운 방법이 Xcode의 Configuration(Build Settings)을 복제하여 사용하는 것입니다.하지만 프로젝트 규모가 커지고 앱의 종류가 늘어남에도 이 방식을 고수하면, 어느 순간 감당할 수 없는 기술 부채로 돌아오게 됩니다.오늘은 제가 실무에서 겪었던 뼈아픈 경험을 바탕으로, 왜 Configuration 분기를 지양하고 코드 기반의 분기 처리로 넘어가야 하는지 정리해 보겠습니다. 1. 실무에서 마주한 'Xcode Configuration 지옥' 많은 곳에서 앱이나 환경이 추가될 때마다 관습적으로 Xcode의 Configuration을 새로 생성하곤 합니다.저 역시 회사에서 앱이 신규 출시.. 2026. 1. 4.
[iOS] CocoaPods에서 SPM까지: 의존성 관리 매니저 변천사와 실무 생존 가이드 안녕하세요!오늘은 iOS 개발의 역사와 함께해온 의존성 관리 매니저(Dependency Manager)들의 변천사를 정리해 보려 합니다.안드로이드가 Gradle을 중심으로 표준화된 생태계를 구축한 것에 비해, iOS는 초창기부터 개발자가 직접 삽질하며 길을 개척해야 했던 역사가 있죠.직접 모듈을 빌드하고 배포하며 겪었던 고충과 실무 팁을 정리해 보겠습니다.1. 태초에 '가내수공업'과 Git Submodule이 있었다안드로이드 개발자들이 Gradle이라는 강력한 빌드 시스템 위에서 Maven Central 등을 통해 편리하게 모듈을 관리할 때, 초기 iOS 개발자들은 각자도생의 길을 걸었습니다.xcodebuild의 공포: CLI로 모듈을 빌드하려면 불친절한 xcodebuild 커맨드와 사투를 벌여야 했습니.. 2026. 1. 1.
[iOS] Static vs Dynamic Framework: 앱 실행 속도와 의존성 충돌의 변천사 iOS 앱 프로젝트를 진행하다 보면 늘 마주하게 되는 고민이 있습니다.바로 "프레임워크를 Static으로 가져갈 것인가, Dynamic으로 가져갈 것인가?"에 대한 문제입니다.과거의 경험과 실무에서 겪은 사례를 바탕으로 이 변화 과정을 정리해 보았습니다.1. 과거의 정석: "앱 실행 속도를 위해 Static은 필수였다"과거 iOS 개발 환경에서 Static Framework는 선택이 아닌 필수처럼 여겨졌습니다. 가장 큰 이유는 바로 앱 실행 속도(Launch Time) 때문이었습니다.Static Framework: 컴파일 시점에 앱의 실행 파일(Binary)에 프레임워크 코드가 직접 포함됩니다. 앱이 실행될 때 별도의 로드 과정이 필요 없어 실행 속도가 매우 빠릅니다.Dynamic Framework: 앱.. 2025. 12. 27.
Swift @autoclosure 완전 이해하기 — 언제, 왜 쓰는 걸까? Swift를 쓰다 보면 간혹 함수 파라미터 앞에 붙은 @autoclosure를 보게 돼요.처음 보면 “자동으로 클로저로 감싸준다는 건 뭐지?” 싶은데, 막상 이해하면가독성과 사용성을 동시에 챙길 수 있는 꽤 매력적인 기능이에요. 오늘은 @autoclosure가 정확히 무엇인지, 언제 쓰는 게 좋은지, 주의해야 할 점은 무엇인지개발자 경험 중심으로 정리해볼게요! @autoclosure란? @autoclosure는 함수 인자로 전달되는 표현식을 자동으로 클로저로 감싸주는 특성(attribute)이에요. 즉, 아래 두 표현은 결과적으로 동일하게 동작해요:// autoclosure가 없는 경우func log(_ condition: () -> Bool) { ... }log({ a > b })// autoclos.. 2025. 12. 10.
📌 RxSwift ↔︎ Combine 비교하면 좋은 연산자 TOP 10 — 한눈에 정리해요 RxSwift에서 Combine으로 넘어갈 때 가장 헷갈리는 부분이 바로 Operator 매핑이에요.이름은 비슷한데 동작이 다르거나, 개념은 같은데 API가 미묘하게 어긋나는 경우가 많죠. 그래서 오늘은 저번 글에 이어 실무에서 자주 만나는 연산자 중RxSwift ↔︎ Combine 서로 비교해볼 만한 핵심 10개를 한 번에 정리해볼게요. 1) flatMap vs flatMap / flatMapLatest vs switchToLatest 개념 요약flatMap들어온 값마다 새로운 스트림(Publisher/Observable)을 만들고, 전부 합쳐서 흘려보내요.flatMapLatest / switchToLatest“가장 최근에 시작된 스트림”만 유지하고 이전 것은 취소합니다. 검색창 자동완성 같은 데서 .. 2025. 12. 9.
📌 RxSwift vs Combine — 값 필터링(Filter) 계열 연산자 비교 + compactMap은 왜 다르게 동작할까? 리액티브 코드를 쓰다 보면 스트림 안에서“어떤 값은 통과시키고, 어떤 값은 버릴지” 결정하는 일이 정말 많아요. 그래서 오늘은 iOS 개발에서 자주 사용하는RxSwift와 Combine의 대표적인 필터링 연산자들을 한눈에 정리해보고,이 중에서 실제로 동작 차이가 발생하는 compactMap을 조금 더 자세히 비교해볼게요. 1. 공통적으로 많이 쓰는 필터 계열 연산자 RxSwift와 Combine은 이름만 조금 다르거나 거의 동일하게 사용 가능한 연산자들이 있어요. ✅ 1) filter조건에 맞는 값만 통과두 프레임워크 모두 동작 100% 동일// RxSwiftsource.filter { $0 > 0 }// Combinepublisher.filter { $0 > 0 } ✅ 2) skip / drop처.. 2025. 12. 9.