[iOS] SwiftUI와 MVVM, Combine, RxSwift에 대하여

Zoe·2023년 3월 2일
0

iOS

목록 보기
13/39

✅ Architecture

  • SwiftUI에서는 보통 MVVM을 많이 사용! 그동안 UIKit에서 사용해왔던 MVC는 Controller에 너무 많은 기능이 담긴다는 단점이 있었는데 그 단점을 해결할 수 있고, SwiftUI는 즉각적인 State변화가 가능하기 때문에 MVVM 구조로 데이터를 효과적으로 관리할 수 있음.
  • model
  • view
  • view model
  • 더 나아가서 service(흔히, data manager)
  • 기능을 최대한 분리
  • 기본은 design과 API임을 기억하자! 나머지 아키텍처 설계는 그 때 그 때 분리하고 결합하는 형태!

✅ Combine

  • 시간 흐름에 따라 값을 처리할 수 있음!
  • Declarative Swift API를 제공하는 프레임워크 : Stream하나를 만들고 그 Stream에 필요한 operator를 붙여서 사용하는 선언적인 프로그래밍 방식, 선언적인 프로그래밍이 되면서, 클로저를 이용한 콜백지옥에서 벗어날 수 있는 장점!!
  • 사실 데이터를 처리할 때 클로저를 많이 사용하게 되면서 어느 시점에 데이터가 정확히 처리가 되는지 직관적으로 볼 수 없다는 단점이 있었는데 Combine을 사용하게 되면 보다 직관적으로 알 수 있게 될 것 같음.
  • 클로저 중첩 같은 가독성이 떨어지는 코드를 간결하게 작성 가능 -> 유지 보수!
  • 코드의 퀄리티를 높여줌
  • Asynchronous 프로그래밍 : 원래는 gcd를 통해 여러 thread를 직접 만들어줘서 관리를 해줬는데! combine을 사용하면 멀티 쓰레딩을 더욱 간편하게 활용가능!
  • async 작업들을 이벤트 처리 연산자로 결합하여 처리
  • Combine은 RxSwift보다 성능이 훨씬 향상
  • 오..
  • Combine이 시간 비용도 좋고, 메모리 할당도 훌륭함!!
  • Combine은 first-party 프레임워크이고, RxSwift는 third-party이므로, Combine을 사용하려면 별도의 설치 없이 바로 iOS 13+에서 사용 가능함. 반면 RxSwift는 pod install해야 함.
  • Combine이 훨씬 성능이 좋은데 RxSwift는 왜... 사용할까?
  • ㅎㅎ..
  • Combine은 2019년에 발표되어 점점 적용되어가는 단계! 그리고 최소 지원이 iOS13이다 보니 아직은 많이 적용을 안하는 걸 수도 있음. 아마 RxSwift를 Combine이 대체하게 될테니, Combine을 많이 사용해보자.
  • 결론적으로 Combine을 사용하게 되면 그동안 겪었던 비동기 이슈들을 해결할 수 있음!!!

  • Publisher : 이벤트 발생
  • Operator : 이벤트 가공
  • Subscriber : 이벤트 소비
  • Publisher의 상태 변화에 따라 Subscriber인 View의 변화가 나타나게 되는 흐름!
profile
iOS 개발자😺

0개의 댓글

관련 채용 정보