вигляд UI елементів • реакція на взаємодію з користувачем • реакція на життєвий цикл представлення (причина сильної зв’язності) • логіка презентації (перетворення даних в зрозумілий для представлення вигляд) • стягування даних із мережі або бази даних • є делегатом сервісів (LocationManager, AudioPlayer, тощо) • переходи між екранами (контролерами)
надає розробникам можливість зв’язувати данні. Тому треба звернутися до реактивного програмування. Для іOS є декілька реалізацій RP: - ReactiveCocoa - RxSwift (ReactiveX) - ReactiveKit
• має велику кількість операторів схожих на оператори колекцій (map, flatMap, filter, skip, тощо) • має велику спільноту програмістів, котра створює безліч корисних бібліотек-обгорток на системні iOS фреймворки і не тільки
зменшили кількість відповідальностей контролера • відділили UI від логіки • уможливили тестування логіки незалежно від UI • стали на крок ближче до створенням надійного, легко підтримуваного продукту