Rx iOS dwa bratanki

Post on 17-Mar-2018

159 views 0 download

Transcript of Rx iOS dwa bratanki

Rx - iOS dwa bratanki…

PIOTR GUZIA

Rx - iOS dwa bratanki…

KIM JESTEM….? ZWYCIĘZCĄ!!!

▸ iOS Developer 20 miesięcy

▸ .NET Developer 30 miesięcy

▸ Muzyk 157 miesięcy

▸ @: guziaster@gmail.com

▸ github.com/guziaster

Rx - iOS dwa bratanki…

O CZYM POWIEM?

Rx - iOS dwa bratanki…

O CZYM POWIEM?

▸ O co chodzi z tym programowaniem reaktywnym?

Rx - iOS dwa bratanki…

O CZYM POWIEM?

▸ O co chodzi z tym programowaniem reaktywnym?

▸ Everything is an observable stream

Rx - iOS dwa bratanki…

O CZYM POWIEM?

▸ O co chodzi z tym programowaniem reaktywnym?

▸ Everything is an observable stream

▸ Subjects

Rx - iOS dwa bratanki…

O CZYM POWIEM?

▸ O co chodzi z tym programowaniem reaktywnym?

▸ Everything is an observable stream

▸ Subjects

▸ Operatory

Rx - iOS dwa bratanki…

O CZYM POWIEM?

▸ O co chodzi z tym programowaniem reaktywnym?

▸ Everything is an observable stream

▸ Subjects

▸ Operatory

▸ Tips n’ Tricks

Rx - iOS dwa bratanki…

PROGRAMOWANIE REAKTYWNE

Rx - iOS dwa bratanki…

PROGRAMOWANIE REAKTYWNE

▸ Kolejny paradygmat programowania…

Rx - iOS dwa bratanki…

PROGRAMOWANIE REAKTYWNE

▸ Kolejny paradygmat programowania…

▸ Opiera się na asynchronicznym przekazywaniu sygnałów między obserwatorem a zainteresowanymi

Rx - iOS dwa bratanki…

PROGRAMOWANIE REAKTYWNE

▸ Kolejny paradygmat programowania…

▸ Opiera się na asynchronicznym przekazywaniu sygnałów między obserwatorem a zainteresowanymi

▸ Dużo sznureczków i kropeczek…

Rx - iOS dwa bratanki…

PROGRAMOWANIE REAKTYWNE

▸ Kolejny paradygmat programowania…

▸ Opiera się na asynchronicznym przekazywaniu sygnałów między obserwatorem a zainteresowanymi

▸ Dużo sznureczków i kropeczek…

Rx - iOS dwa bratanki…

RX MARBLES

Rx - iOS dwa bratanki…

RX MARBLES

Rx - iOS dwa bratanki…

RX MARBLES

Rx - iOS dwa bratanki…

EVERYTHING IS AN OBSERVABLE STREAM

Rx - iOS dwa bratanki…

EVERYTHING IS AN OBSERVABLE STREAM

Rx - iOS dwa bratanki…

EVERYTHING IS AN OBSERVABLE STREAM

Rx - iOS dwa bratanki…

EVERYTHING IS AN OBSERVABLE STREAM

Rx - iOS dwa bratanki…

EVERYTHING IS AN OBSERVABLE STREAM

Rx - iOS dwa bratanki…

EVERYTHING IS AN OBSERVABLE STREAM

▸ Observable… observable… wszędzie observable….

Rx - iOS dwa bratanki…

EVERYTHING IS AN OBSERVABLE STREAM

▸ Observable… observable… wszędzie observable….

Rx - iOS dwa bratanki…

EVERYTHING IS AN OBSERVABLE STREAM

▸ Observable… observable… wszędzie observable….

Rx - iOS dwa bratanki…

SUBJECTS

Rx - iOS dwa bratanki…

SUBJECTS

▸ PublishSubject

Rx - iOS dwa bratanki…

SUBJECTS

▸ PublishSubject

▸ BehaviorSubject

Rx - iOS dwa bratanki…

SUBJECTS

▸ PublishSubject

▸ BehaviorSubject

▸ ReplaySubject

Rx - iOS dwa bratanki…

SUBJECTS

▸ PublishSubject

▸ BehaviorSubject

▸ ReplaySubject

▸ Variable

Rx - iOS dwa bratanki…

PUBLISH SUBJECT

Rx - iOS dwa bratanki…

PUBLISH SUBJECT

▸ Przy inicjalizacji są puste i przekazują dalej tylko nowe elementy

Rx - iOS dwa bratanki…

PUBLISH SUBJECT

▸ Przy inicjalizacji są puste i przekazują dalej tylko nowe elementy

Rx - iOS dwa bratanki…

PUBLISH SUBJECT

▸ Przy inicjalizacji są puste i przekazują dalej tylko nowe elementy

Rx - iOS dwa bratanki…

BEHAVIOR SUBJECT

Rx - iOS dwa bratanki…

BEHAVIOR SUBJECT

▸ Do inicjalizacji konieczne jest podanie wartości startowej, po zasubskrybowaniu powtarza ostatnią wartość

Rx - iOS dwa bratanki…

BEHAVIOR SUBJECT

▸ Do inicjalizacji konieczne jest podanie wartości startowej, po zasubskrybowaniu powtarza ostatnią wartość

Rx - iOS dwa bratanki…

BEHAVIOR SUBJECT

▸ Do inicjalizacji konieczne jest podanie wartości startowej, po zasubskrybowaniu powtarza ostatnią wartość

Rx - iOS dwa bratanki…

REPLAY SUBJECTS

Rx - iOS dwa bratanki…

REPLAY SUBJECTS

▸ Inicjalizacja wymaga podania rozmiaru tego obiektu. Po każdej subskrypcji wszystkie elementy będą zawsze powtarzane.

Rx - iOS dwa bratanki…

REPLAY SUBJECTS

▸ Inicjalizacja wymaga podania rozmiaru tego obiektu. Po każdej subskrypcji wszystkie elementy będą zawsze powtarzane.

Rx - iOS dwa bratanki…

REPLAY SUBJECTS

▸ Inicjalizacja wymaga podania rozmiaru tego obiektu. Po każdej subskrypcji wszystkie elementy będą zawsze powtarzane.

Rx - iOS dwa bratanki…

VARIABLE

Rx - iOS dwa bratanki…

VARIABLE

▸ Obudowanie na Behavior Subject - zachowuje się tak samo ale przechowuje obecny stan - Value, który dodatkowo daje możliwość edycji elementów jak zwykły Array

Rx - iOS dwa bratanki…

VARIABLE

▸ Obudowanie na Behavior Subject - zachowuje się tak samo ale przechowuje obecny stan - Value, który dodatkowo daje możliwość edycji elementów jak zwykły Array

Rx - iOS dwa bratanki…

VARIABLE

▸ Obudowanie na Behavior Subject - zachowuje się tak samo ale przechowuje obecny stan - Value, który dodatkowo daje możliwość edycji elementów jak zwykły Array

Rx - iOS dwa bratanki…

OPERATORY

Rx - iOS dwa bratanki…

OPERATORY

▸ Filtrujące

Rx - iOS dwa bratanki…

OPERATORY

▸ Filtrujące

▸ Transformujące

Rx - iOS dwa bratanki…

OPERATORY

▸ Filtrujące

▸ Transformujące

▸ Złączające

Rx - iOS dwa bratanki…

OPERATORY FILTRUJĄCE

Rx - iOS dwa bratanki…

OPERATORY FILTRUJĄCE

▸ Distinct

Rx - iOS dwa bratanki…

OPERATORY FILTRUJĄCE

▸ Distinct

▸ ElementAt

Rx - iOS dwa bratanki…

OPERATORY FILTRUJĄCE

▸ Distinct

▸ ElementAt

▸ Throttle

Rx - iOS dwa bratanki…

OPERATORY FILTRUJĄCE

▸ Distinct

▸ ElementAt

▸ Throttle

▸ Debounce

Rx - iOS dwa bratanki…

OPERATORY FILTRUJĄCE

▸ Distinct

▸ ElementAt

▸ Throttle

▸ Debounce

Rx - iOS dwa bratanki…

OPERATORY TRANSFORMUJĄCE

Rx - iOS dwa bratanki…

OPERATORY TRANSFORMUJĄCE

▸ Map

Rx - iOS dwa bratanki…

OPERATORY TRANSFORMUJĄCE

▸ Map

▸ FlatMap

Rx - iOS dwa bratanki…

OPERATORY TRANSFORMUJĄCE

▸ Map

▸ FlatMap

▸ FlatMapLatest

Rx - iOS dwa bratanki…

OPERATORY TRANSFORMUJĄCE

▸ Map

▸ FlatMap

▸ FlatMapLatest

▸ GroupBy

Rx - iOS dwa bratanki…

OPERATORY TRANSFORMUJĄCE - FLATMAP

Rx - iOS dwa bratanki…

OPERATORY TRANSFORMUJĄCE - FLATMAP

Rx - iOS dwa bratanki…

OPERATORY TRANSFORMUJĄCE - FLATMAP

Rx - iOS dwa bratanki…

OPERATORY ZŁĄCZAJĄCE

Rx - iOS dwa bratanki…

OPERATORY ZŁĄCZAJĄCE

▸ Concat

Rx - iOS dwa bratanki…

OPERATORY ZŁĄCZAJĄCE

▸ Concat

▸ CombineLatest

Rx - iOS dwa bratanki…

OPERATORY ZŁĄCZAJĄCE

▸ Concat

▸ CombineLatest

Rx - iOS dwa bratanki…

OPERATORY ZŁĄCZAJĄCE

▸ Concat

▸ CombineLatest

▸ Merge

Rx - iOS dwa bratanki…

OPERATORY ZŁĄCZAJĄCE

▸ Concat

▸ CombineLatest

▸ Merge

Rx - iOS dwa bratanki…

OPERATORY ZŁĄCZAJĄCE

▸ Concat

▸ CombineLatest

▸ Merge

▸ Zip

Rx - iOS dwa bratanki…

Requests Chaining - zip

Rx - iOS dwa bratanki…

Requests Chaining - zip

Rx - iOS dwa bratanki…

RxCocoa

Rx - iOS dwa bratanki…

RxCocoa

▸ Obserwowanie zmian w UI

Rx - iOS dwa bratanki…

RxCocoa

▸ Obserwowanie zmian w UI

Rx - iOS dwa bratanki…

RxCocoa

▸ Obserwowanie zmian w UI

Rx - iOS dwa bratanki…

RxAnimatableDataSource

Rx - iOS dwa bratanki…

RxAnimatableDataSource

▸ Bindowanie danych bezpośrednio do tabeli

Rx - iOS dwa bratanki…

RxAnimatableDataSource

▸ Bindowanie danych bezpośrednio do tabeli

▸ Animacje przy edycji wierszy

Rx - iOS dwa bratanki…

RxAnimatableDataSource

▸ Bindowanie danych bezpośrednio do tabeli

▸ Animacje przy edycji wierszy

▸ Krótszy kod w porównaniu do UITableViewDataSource

Rx - iOS dwa bratanki…

Bonus

Rx - iOS dwa bratanki…

Bonus

▸ RxMoya

▸ RxAlamofire

▸ I inne…

Rx - iOS dwa bratanki…

Bonus

▸ RxMoya

▸ RxAlamofire

▸ I inne…

Rx - iOS dwa bratanki…

PODSUMOWANIE

Rx - iOS dwa bratanki…

PODSUMOWANIE

+

Rx - iOS dwa bratanki…

PODSUMOWANIE

▸ Wieloplatformowa idea+

Rx - iOS dwa bratanki…

PODSUMOWANIE

▸ Wieloplatformowa idea

▸ Mniej kodu

+

Rx - iOS dwa bratanki…

PODSUMOWANIE

▸ Wieloplatformowa idea

▸ Mniej kodu

▸ Asynchroniczne działanie

+

Rx - iOS dwa bratanki…

PODSUMOWANIE

▸ Wieloplatformowa idea

▸ Mniej kodu

▸ Asynchroniczne działanie

▸ Sporo praktycznych dodatków przyspieszających pracę

+

Rx - iOS dwa bratanki…

PODSUMOWANIE

▸ Wieloplatformowa idea

▸ Mniej kodu

▸ Asynchroniczne działanie

▸ Sporo praktycznych dodatków przyspieszających pracę

▸ Wiele popularnych bibliotek wspiera Rx

+

Rx - iOS dwa bratanki…

PODSUMOWANIE

▸ Wieloplatformowa idea

▸ Mniej kodu

▸ Asynchroniczne działanie

▸ Sporo praktycznych dodatków przyspieszających pracę

▸ Wiele popularnych bibliotek wspiera Rx

+ -

Rx - iOS dwa bratanki…

PODSUMOWANIE

▸ Wieloplatformowa idea

▸ Mniej kodu

▸ Asynchroniczne działanie

▸ Sporo praktycznych dodatków przyspieszających pracę

▸ Wiele popularnych bibliotek wspiera Rx

▸ Wysoki próg wejścia+ -

Rx - iOS dwa bratanki…

PODSUMOWANIE

▸ Wieloplatformowa idea

▸ Mniej kodu

▸ Asynchroniczne działanie

▸ Sporo praktycznych dodatków przyspieszających pracę

▸ Wiele popularnych bibliotek wspiera Rx

▸ Wysoki próg wejścia

▸ Specyficzny kod

+ -

Rx - iOS dwa bratanki…

PODSUMOWANIE

▸ Wieloplatformowa idea

▸ Mniej kodu

▸ Asynchroniczne działanie

▸ Sporo praktycznych dodatków przyspieszających pracę

▸ Wiele popularnych bibliotek wspiera Rx

▸ Wysoki próg wejścia

▸ Specyficzny kod

▸ Trudniejsze debugowanie

+ -

Rx - iOS dwa bratanki…

ŹRÓDŁA I PRZYKŁADY

▸ http://reactivex.io/

▸ https://github.com/ReactiveX/RxSwift

▸ https://github.com/RxSwiftCommunity

▸ https://itunes.apple.com/pl/app/rxmarbles/id1087272442?l=pl&mt=8

▸ http://adamborek.com

▸ http://rxswift-slack.herokuapp.com

Q&A