[Day 47] Reactive Programming
RxSwift를 사용하여 Reactive Rrogramming하기! Part.1
[Day 47] Reactive Programming
❓ RxSwift? Reactive Programming 그게뭐야?
사용자가 입력할 때마다 감지해야하고, 이벤트 별로 전부 addTarget
, delegate
, NotificationCenter
등등…. 예를 들어서 로그인 버튼은 ID
, Password
, 둘 다 입력해야 활성화가 되고, 입력 중이면, 로딩표시.. 서버 응답이 오면 Alert
띄우기…
이렇게 상태가 많아지면 버그가 생기고, 흐름이 꼬이고 콜백의 지옥에 빠지게 되죠?…
이런 흐름이 전부 비동기 & 이벤트 기반이에요!
그래서 등장한 해결책이 Reactive programming
“값이 바뀌면 거기에 자동으로 반응하게 하자!”
- 사용자가 텍스트 입력 → 이벤트 스트림
- 네트워크 응답 → 스트림
- 뷰의 상태 변화 → 스트림
이모든걸 하나의 데이터 흐름으로 보고 → 그 흐름에 반응하는 코드만 쓰면 끝!
자 그러면 간단하게 Reactive Programming를 알아 보았으니 RxSwift에 대해서 알아볼까요?
📌 RxSwift란?
ReactiveX는 Microsoft
에서 만든 비동기, 이벤트 기반 프로그램을 위한 라이브러리에요.
지원하는 여러가지 언어들이 있는데 그 중
ReactiveX
를Swift
에서 쓸 수 있게 만든 라이브러리가RxSwift
Reactive Extension
은 함수형 패러다임의 기반으로 모든 연산은 고차 함수로 표현
한 답니다.
▶️ ReactiveX 핵심 구성 요소
개념 | 역할 |
---|---|
Observable | 데이터 스트림을 나타내는 객체 (ex: 텍스트 입력, 버튼 클릭, 서버 응답 등) |
Operators | map , filter , flatMap 등의 스트림 변형 연산 |
subscribe() | 이 스트림(Observer )을 지켜보겠다 |
Observer | Observable 을 구독하고, 그 이벤트를 처리하는 객체 |
disposeBag | 메모리 누수 방지 |
예를 들면
1
2
3
4
5
6
Observable.from([10, 20, 30, 40, 50]) // Observable: 배열을 스트림으로 변환
.map { $0 * 2 } // Operator: 각 값을 2배로 변형
.subscribe(onNext: { value in // subscribe: 구독하고
print(value) // Observer: 값을 처리 (이벤트에 반응)
})
.disposed(by: disposeBag) // disposeBag: 메모리 누수 방지
맺으며: 춘식이와 함께하는 스마트한 개발
Part.2에 이어서~
오늘도 오류 내며 자란 춘식이였습니다. 🐾 더 열심히 노력 해서 좋은 iOS Developer가 되자!
혹시 이 글을 보시는 분들 중 더 유용한 팁이 있다면 댓글로 많이 알려주세요!
This post is licensed under CC BY 4.0 by the author.