Model-View-Controller (MVC)1 is the defacto Apple prescribed approach to create iOS apps. After developing apps for a while, the shortcomings of MVC become obvious, earning them the nickname Massive View Controllers among the developer community. Some of the problems with MVC are: Poor testability: ViewControllers end up doing so many things and it makes testing cumbersome. No well defined way to put networking code in canonical MVC, so ViewControllers end up doing that part.