MVVM in iOS
Yeah I know that you are familiar with MVC. Here I am going to introduce better architecture for your next and existing iOS application .

As you already know, Models hold data, views present an interactive interface to the user, and view controllers mediate the interaction between the model and the view.
- Weaknesses of MVC
- It generates massive view controllers — hard to manage .
- hard to test( manually or unit testing) .
- No better place to do networking things .
Consider for a moment that, although views and view controllers are technically distinct components, they almost always go hand-in-hand together, paired.

As I mentioned earlier , usually view controller’s logic gets massive but a lot of it is what’s called ‘presentation logic,’ in MVVM terms — things like transforming values from the model into something the view can present, like taking an Date and turning it into a formatted String.
so we can place our presentation logic separately . We’re going to call this the ‘view model’ — it will sit between the view/controller and the model.

+ Strength of MVVM
- compatible with your existing MVC projects .
- makes your apps more testable .
- works best with a binding mechanisms .
We could use KVO, like with MVC, but that can quickly become unmanageable. In practice, using ReactiveCocoa is a great way to glue all the moving pieces together.
