Upload
the-software-house
View
159
Download
0
Embed Size (px)
Citation preview
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
▸ @: [email protected]
▸ 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