Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Developing iOS with Rx, MVVM

Wooseong Kim
November 26, 2016

Developing iOS with Rx, MVVM

Introducing how I developed iOS project with Rx, MVVM

staccato 2016 에서 발표한 자료입니다.

Wooseong Kim

November 26, 2016

More Decks by Wooseong Kim

Other Decks in Programming


  1. Wooseong Kim Mobile software engineer, BBB Tech Inc. Rx 그리고

    MVVM로개발하기 Session 4 #staccato iOS Development
  2. Agenda MVVM - Model, View, View Model Rx - Reactive

    Programming - RxSwift MVVM + Rx - Data binding with RxCocoa
  3. About me Yooii Studios -Android/iOS developer, Project manager - Developed

    5 Apps, support 2 apps KNU libraries - iOS (4 years) - Android (2 years) BBB Tech Inc. - Android/iOS developer
  4. About me Career -65% Android, 35% iOS - iOS 선호

    양플랫폼에서 비슷한수준의 기술을유지하려 노력 오늘주제도 Android에서 먼저 경험한 내용
  5. Why Architecture? 자주발생하는 문제에대한 범용적인솔루션 Clean code, 높은가독성, SRP(단일 책임원칙)

    - 계속해서 변하는 기획에 대응하기유리 - 분업용이, 서로효율적이고 빠른코드리뷰가 가능 : github Pull Request & Merge with code review 혼자개발해도 설계는중요! -3개월 이후의나는다른 개발자나다름없음 - 미래의 내가 야근하지않기 위해…
  6. iOS architecture MVVM Repository pattern - Not covered today Rx

    - Asynchronous - Data binding → Efficient, Clean and Fast!
  7. Why MVVM? 기존MVC 패턴의 문제 -Massive UIViewController is hell! 1000줄이

    넘어가는 UIViewController - UITableViewDelegate, UITableViewDataSource, Life cycle - UI init methods, Model logic, UI interactions, Flow logic etc. → MVVM을통해Complexity ↓, Testability ↑ - Separate business logic from UI logic
  8. View including UIViewController View는 UI 로직만 포함 ViewModel update View

    with data owns ViewModel User Interaction을 받아ViewModel로 전파
  9. Why Rx? 비동기로직, 복잡한상황을 좀 더간결하게표현 -No more complex callbacks

    Rx로비동기 로직 통일 - No more AsyncTask, GCD, NSOperation, Thread 메이저비동기 오픈소스들이 Rx 지원 - Alarmofire, Moya, Realm
  10. Data Binding 데이터의 변경에 맞추어뷰가 자동으로변경 Rx에선Observable에서 방출되는값에 맞추어UI가 변경되도록연

    결 어떻게? - 프로젝트 초기 이해하지 못해View protocol로 구현 - Driver를 사용해해결
  11. Conclusion MVVM -No more MVC! → MVVM or MVP, 그리고VIPER

    - 기존MVC 구조에서 점진적 적용가능 Rx - 학습곡선은 높지만, Clean code를 위한좋은동반자 - 비동기 로직부터 구현해보자 MVVM + RM - Data binding with Driver - No more View protocol