클로저(Closure)를 쓰다 보면 가끔 예상치 못한 메모리 문제를 만난다."왜 self가 필요하지?""이 변수 값이 왜 바뀌지 않지?" "메모리 해제가 안 되는 이유가 뭘까?"이런 의문이 들었다면, 바로 "캡처 리스트(Capture List)"를 이해해야 할 때다.오늘은 Swift에서 클로저가 변수를 어떻게 캡처하는지, 캡처 리스트가 없으면 어떤 문제가 생기는지, 실무에서는 어떻게 활용해야 하는지 알아보자클로저는 변수를 어떻게 기억할까?먼저 클로저(Closure)가 변수를 캡처(Capture)한다는 개념부터 이해해보자.func makeIncrementer() -> () -> Int { var total = 0 let increment: () -> Int = { total ..
ReactorKit 을 사용해 MVVM 구조를 리팩토링 하던중 concat 과 merge 를 정리할 필요가 있어서 알아봤다. 둘다 RxSwift 의 결합 오퍼레이터중에 하나이다. 시퀀스를 합성해주는역할을 한다고 알고있지만 구체적으로 어떻게 동작 하고있는지 어떤 차이점이 있는지 알아보고 싶었다. 먼저 Concat 문서상에서는 2개 이상의 Observables 를 중간에 넣지 않고 배출한다 라고 설명 되어있는데, 그림을 봐서는 시퀀스를 결합할때 중간에 끼워 넣지 않고 순차적으로 배출하는것 처럼 보인다. 일단 코드를 만들어보자. let first = Observable.of(1,2,3) let second = Observable.of(4,5,6) let observables = Observable .conc..