MVVM과 FRP를 쉽게 다루기 위해

3630 단어 iOSMVVMFRP

개요


  • MVVM이나 FRP를 연습하기 쉽도록 유명 도코로 라이브러리를 가져와 샘플을 만든다.

  • 참고 링크


  • MVVM을 기반으로 복잡한 동작을 확실히 파악할 수 있는 앱 개발
  • GUI 아키텍처 패턴의 기초에서 MVVM 패턴으로
  • MVVM의 모델과 관련된 오해 - the sea of ​​fertility

  • 지금까지 iOS 설계의 흐름을 흠뻑



    MVC ( ~ 2012)





    MVP ( ~ 2014)





    MVVM ( ~ 2015 ~ )





    도서관



    아래의 ◎○△x는 개인적인 쓰기입니다.



    MVVM용
    FRP or 태스크 분할용
    총 사이즈


    RxSwift


    33MB

    ReactiveCocoa


    26.8MB

    ReactKit


    7.8MB

    ReactiveKit



    SwiftBond

    x
    7.4MB

    SwiftTask
    x

    2.6MB


    도서관 인터페이스의 취급 용이성 (개인적인 감상입니다.)




    RxSwift · 취급하기 쉬운/직관적 · XCode 등의 코드 보완이 효과적



    ReactiveCocoa3.0(옛날의 것)・취급하기 어려운/이해에 시간이 걸린다・XCode등의 코드 보완이 효과가 어렵다



    RxSwift
    SwiftBond SwiftTask

    ReactiveCocoa4.0
    ReactKit
    ReactiveCocoa3.0


  • ReactiveCocoa는 점차 RxSwift에 인터페이스를 보내고있는 인상
  • ReactiveKit (≠ReactKit)은 RxSwift에 유용한 Extension (예 : Collection 주변)을 더한 느낌 (조사 부족 ..)

  • 사이즈 상세




    도서관
    framework1
    framework2
    framework3


    RxSwift
    RxSwift.framework(22M)
    RxCocoa.framework(9.6M)
    RxBlocking.framework(648K)

    ReactiveCocoa
    ReactiveCocoa.framework(26M)
    Result.framework(872K)

    ReactKit
    ReactKit(5.4M)
    SwiftTask.framework(2.8M)

    SwiftBond
    Bond.framework(7.1M)


    SwiftTask
    SwiftTask.framework(2.8M)



    ※실제로 archive하면 ReactiveCocoa로 10MB 정도였다

    개인적인 쓰기에 대해



    전제


  • 방향성
  • 궁극적으로 MVVM + FRP를 앱에 통합하는 것을 목표로합니다.
  • MVVM + FRP 마이그레이션의 경우 단계적으로 마이그레이션합니다.

  • 마이그레이션 순서
  • 값 변화 모니터링 기능(KVO)을 사용하여 MVVM을 구현합니다. -> MVVM
  • 값 변화의 감시 기능을 확장(FRP)하여 감시 능력에 폭을 갖게 한다. -> MVVM + FRP


  • 전제를 실현하기 위해


  • MVVM 도입 파트
  • KVO의 간단한 Wrapper로서 취급할 수 있어 MVVM을 실현할 수 있는 라이브러리.
  • FRP용으로 취급하는 라이브러리와 호환성이 있다.
  • 학습 비용이 낮다.
  • -> SwiftBond


  • MVVM 도입 파트
  • MVVM+FRP를 실현할 수 있는 것. (FRP의 경우 ReactiveX에서도 가능)
  • -> SwiftBond에서 RxSwift로 마이그레이션.


  • 도서관 선정 이유


  • 초기는, MVVM만의 도입으로 좋기 때문에 팀의 학습 코스트를 억제하고 싶다.
  • SwiftBond와 RxSwift의 인터페이스가 비슷하다.
  • (시간이 있는 or 팀의 캐치업력이 높으면 갑자기 RxSwift를 이용한다.)

  • 주제


  • 샘플 프로젝트-0.0.1
  • 좋은 웹페이지 즐겨찾기