개요
하루 10분, 리액티브 사고방식을 익혀보세요!
📌 빠른 링크
GitBook 에 맞춰 작성
🌐 공식 홈페이지
🐙 RxSwift GitHub
🤝 RxSwiftCommunity
📖 GitBook
🏗️ 연습용 플레이그라운드
✨ 왜 RxSwift인가?
"비동기의 복잡함을 선언형 코드 한 줄로 다스린다!"
코드 간결화
map · filter · zip 등 풍부한 오퍼레이터로 반복되는 보일러플레이트 제거
명확한 데이터 흐름
💧 Observable → Operator → Observer 흐름이 명확해 디버깅‧유지보수 용이
자연스러운 비동기 처리
GCD,
completion
지옥에서 탈출스케줄러로 스레드 전환을 한눈에 파악
강력한 콤포지션
여러 비동기 스트림을 하나로 결합(combineLatest, merge, concat…)해 복잡한 UI 상태를 단순화
테스트 용이성
TestScheduler
로 가상 시간 기반 단위 테스트 가능
📖 Rx 마블 다이어그램으로 오퍼레이터 작동 방식을 시각적으로 학습해 보세요!
⚙️ 설치하기
Swift Package Manager (추천)
// swift-tools-version: 5.9
import PackageDescription
let package = Package(
name: "RxPractice",
platforms: [ .iOS(.v15) ],
dependencies: [
.package(url: "https://github.com/ReactiveX/RxSwift.git", from: "6.6.0")
],
targets: [
.target(
name: "RxPractice",
dependencies: ["RxSwift", "RxCocoa"])
]
)
👉 Xcode:
File
▸Add Packages...
에서 URL 입력 후Up to Next Major
선택
🏃♂️ 빠른 시작
Playground 클론
git clone https://github.com/ywangnon/RxSwift_GitBook_Playground.git open RxSwift_GitBook_Playground/RxSwiftPractice.xcodeproj
샘플 시나리오
📰 Networking : URLSession을 Rx 확장으로 감싸기
🔍 SearchBar :
UITextField
를rx.text
로 바인딩🎵 Music Player :
Observable.combineLatest
로 UI 상태 동기화
미션
Throttle
,Debounce
차이를 실습해보기flatMapLatest
vsswitchMap
비교
💡 Hint:
RxTimeInterval.milliseconds(300)
로 UI 이벤트 디바운싱
📁 프로젝트 구조
RxSwift_GitBook_Playground
├── Sources
│ ├── NetworkService.swift
│ ├── SearchViewModel.swift
│ └── MusicPlayerViewModel.swift
└── Tests
├── SearchViewModelTests.swift
└── MusicPlayerViewModelTests.swift
🔖 더 읽어보기
🗒️ 기여 가이드
Fork → PR: 예제 추가나 오타 수정 환영합니다!
커밋 메시지 컨벤션:
[Add]
,[Fix]
,[Docs]
,[Refactor]
Issue 템플릿에 따라 재현 코드/스크린샷 포함 부탁드립니다.
"ReactiveX는 언어가 아니라 패러다임입니다. 오늘부터 선언형 스트림으로 앱의 복잡성을 줄여보세요!"
© 2025 HS Yoo · Built with ❤️ & RxSwift
Last updated