Rx 4

[RxCocoa] RxCocoa 사용시 주의사항

mvvm과 rx를 사용해서 프로젝트를 하던 중 버튼을 눌러도 메서드가 호출되지 않는 문제가 발생해서 혹시나 같은 문제를 겪는 사람을 위해 글을 남긴다. class ViewController: UIViewController { let disposeBag: DisposeBag = .init() let button = UIBarButtonItem(systemItem: .bookmarks) override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.view.backgroundColor = .systemBackground self.navigationItem.leftBarButtonIt..

Rx 2023.05.16

[RxSwift] BehaviorSubject 값 가져오기

let testBehavior = BehaviorSubject(value: 1) testBehavior.subscribe(onNext: { value in print("emit : \(value)") }) for i in 1...50 { testBehavior.onNext(i) let testA = try! testBehavior.value() print(testA) } BehaviorSubject는 값을 가지고 있는 상태이며 내부의 값을 가져올 때 에러핸들링이 필요하다. PublishSubject는 값을 가지고 있지 않다. var second: Int { didSet { timeObservable.onNext(second) } } private let timeObservable: PublishSubje..

Rx 2023.04.15

[RxTest] XCTExpectation

XCTExpectation 비동기 테스트에 사용되는 Xcode의 XCTest 프레임워크에서 제공하는 클래스이다. 테스트를 계속하기 전에 기대치가 충족될 때까지 기다릴 수 있다. 사용 예시 let expectation = XCTestExpectation(description: "timer completed") timeObservable.subscribe(onNext: { time in resultValues.append(time.totalSecond) if time.totalSecond == 0 { expectation.fulfill() } }).disposed(by: disposeBag) // Start the timer self.timerStartUseCase.modeStart() wait(for: [..

Rx 2023.04.06

[Rx] Reactive Programming이란?

리액티브 프로그래밍이란? 비동기 데이터의 스트림과 데이터 변경에 대한 전파에 초점을 둔 프로그래밍 패러다임이다. 비동기 데이터 스트림 버튼을 누르는 경우는 비동기 이벤트다 시간의 흐름에 따라 데이터가 움직인다 스트림은 시간의 흐름에 따른 이벤트를 나열해놓은 것이다. 이 전체의 과정을 하나의 스트림으로 본다 즉, 데이터 스트림은 시간의 흐름에 따라 데이터가 움직이는 것을 말한다. 비동기라는 말이 들어가는 이유는 버튼을 누르는 경우가 비동기적이며 스트림 중에 다음 이벤트가 언제 들어올지 모르기 때문이다 스트림은 3개의 이벤트를 발생시킨다. onNext, onComplete, onError를 발생시킬 수 있다. Emit 한다고 한다. onNext 클로저를 통해 데이터를 Emit한다. 데이터 변경에 대한 전파 ..

Rx 2023.03.01