reactivecocoa: делаем отзывчивое приложение (П. Руденко)

37
ReactiveCocoa Делаем отзывчивое приложение. \m/

Upload: 65apps

Post on 09-Jan-2017

828 views

Category:

Software


2 download

TRANSCRIPT

ReactiveCocoa

Делаем отзывчивое приложение.\m/

Актуальность темы: тренд FP

Актуальность темы: тренд FP

RxJava

React.js

ReactiveCocoa

&& so on

Мифы о ФП

ФП - это сложно

Мифы о ФП

ФП - это сложно

ФП - это решение всех проблем

В двух словах о ФП:

Иммутабельность

В двух словах о ФП:

Иммутабельность

Функции высшего порядка

Проблемы

Нельзя блокировать UI thread (а ресурсы ограничены)

Проблемы

Нельзя блокировать UI thread >>>

Очень многие операции выполняются асинхронно в фоне

Проблемы

Нельзя блокировать UI thread

Очень многие операции выполняются асинхронно в фоне

Нам часто нужны цепочки из таких операций

Проблемы

Нельзя блокировать UI thread

Очень многие операции выполняются асинхронно в фоне

Нам часто нужны цепочки из таких операций

И масштабируемость (цепочка может быть частью более крупного конвейера)

Проблемы

Нельзя блокировать UI thread

Очень многие операции выполняются асинхронно в фоне

Нам часто нужны цепочки из таких операций

И масштабируемость (цепочка может быть частью более крупного конвейера)

(and we need to go deeper)

NSNotification hell

Talk is cheap, show me the code.

RACSignal

Lifecycle

Еще один пример конвейера

findAll where sortBy fetch take

Основные сигналы и как их готовить

map, filter

Основные сигналы и как их готовить

merge, concat

Основные сигналы и как их готовить

then, flattenMap

Основные сигналы и как их готовить

delay

throttle

repeat

initially

finally

...

Многопоточность

subscribeOn, deliverOn

Сайд-эффекты

doNext / doError / doCompleted

Data binding && MVVM

Управление интерфейсом

Боль

Боль

subscribeNext(): subscribe WHAT?

Боль

subscribeNext(): subscribe WHAT?

Заметный оверхэд (привет, stack overflow)

Боль

subscribeNext(): subscribe WHAT?

Заметный оверхэд (привет, stack overflow)

Debug: шлак в стеке вызовов

TL;DR (TL;DL)

Субъективное резюме

The Good, the Bad and The Ugly

The Good:

Reactive Cocoa божественен для работы со сложными цепочками асинхронных операций и в качестве замены NSNotification и NSOperationQueue

The Good, the Bad and The Ugly

The Bad:

Data binding, RACObserve и управление интерфейсом через RAC - дискуссионно и на любителя

The Good, the Bad and The Ugly

The Ugly:

MVVM под iOS - оверинжиниринг

Вопросы?