RX COCOA
권문범 / @MBKYLE
MASKKWON@GMAIL.COM
WHAT IS COCOA?
RX COCOA
RX SWIFT
COCOA
▸ Cocoa is….
RX SWIFT
COCOA
▸ Cocoa, which includes the
Foundation and AppKit
frameworks, is used for
developing applications that run
on macOS (OS X)
RX SWIFT
COCOA TOUCH
▸ Cocoa Touch, which includes the
Foundation and UIKit frameworks,
is used for developing
applications that run on iOS
BEGINNING
RX COCOA
RX SWIFT
HOW TO BINDING DATA
OBSERVABLE
SUBJECT
OBSERVER
STATE
OBSERVING
SUBSCRIBING
EMITTING ITEMS
DISPOSABLE
RESOURCE COUNTING
RX SWIFT
WHAT ARE OBSERVABLES
▸ The heart of Rx
▸ Rx : observable, observable sequence, sequence (same)
▸ Observables emits events (emit)
▸ Events can contain values or can be recognized gestures
RX SWIFT
HOW TO BINDING DATA
OBSERVABLE
SUBJECT
OBSERVER
STATE
OBSERVING
SUBSCRIBING
EMITTING ITEMS
DISPOSABLE
RESOURCE COUNTING
RX SWIFT
WHAT ARE SUBJECTS
▸ Subject is a sort of bridge or proxy that is available in some implementations of ReactiveX that act
both an observable and an observer
▸ PublishSubject - starts empty and only emits new elements to subscribers
▸ BehaviorSubject - starts with an initial value and replays it or the latest element to new subscriber
▸ ReplaySubject - initialized with a buffer size and will maintain a buffer of elements up to that size
and replay it to new subscribers
▸ Variable - wraps a BehaviorSubject, preserve its current value as state, and replays only the
latest/initial value to new subscribers
RX SWIFT
TRAITS
▸ Traits in general is an optional part of the framework, you are not forced to use
it.
▸ If you want some checks while compiling and nice restrictions when dealing
with the UI, these components are extremely powerful and time saving.
RX SWIFT
TRAITS
▸ ControlProperty : It is used to bind the data to the correct user interface
components using the rx extension.
▸ ControlEvent : It is used to listen to a certain event of the UI components.
▸ Driver : A special observable can’t error out. All processes are ensured to
execute on the main thread, which avoids making UI changes on background
threads.
RX SWIFT
CONTROL PROPERTY
RX SWIFT
CONTROL PROPERTY
VALUES
SUBJECT
OBSERVER
PROPERTY
OBSERVING
SUBSCRIBING
EMITTING ITEMS
DISPOSABLE
RESOURCE COUNTING
RX
CONTROL PROPERTY
RX SWIFT
CONTROL EVENT
EVENTS
SUBJECT
OBSERVER
EVENT
OBSERVING
SUBSCRIBING
EMITTING ITEMS
DISPOSABLE
RESOURCE COUNTING
RX
CONTROL EVENT
RX SWIFT
DRIVER
SOURCE
SUBJECT
OBSERVER
OBSERVED
OBSERVING
SUBSCRIBING
EMITTING ITEMS
DISPOSABLE
RESOURCE COUNTING
RX
DRIVER
MAIN SCHEDULER
RX SWIFT
UI BINDING OBSERVER
RX SWIFT
BINDING OBSERVABLES
▸ 데이터에 따른 UI 업데이트 트리거
▸ 데이터에 따른 background process 트리거
RX SWIFT
BIND TO
OBSERVABLE
SUBJECT
OBSERVER
OBSERVED
OBSERVING
BIND TO
EMITTING ITEMS
DISPOSABLE
RESOURCE COUNTING
PRODUCER
RECEIVER
RX SWIFT
DISPOSING WITH RX COCOA
▸ nothing : Inside singletons or a view controller which are never released.
▸ unowned : Inside all view controllers which are released after the closure task is
performed.
▸ weak : any other case.
RX SWIFT
UNOWNED
VIEWCONTROLLER
RX SWIFT
UNOWNED
VIEWCONTROLLER VIEWCONTROLLER
SUBSCRIBING
OBSERVABLE
CLOSURE
RX SWIFT
UNOWNED
VIEWCONTROLLER VIEWCONTROLLER
DISPOSING
OBSERVABLE
CLOSURE
RX SWIFT
UNOWNED
VIEWCONTROLLER VIEWCONTROLLER
DISPOSING
OBSERVABLE
CLOSURE
RX SWIFT
UNOWNED
VIEWCONTROLLER VIEWCONTROLLER
DISPOSING
OBSERVABLE
CLOSURE
NP
RX SWIFT
WEAK
VIEWCONTROLLER
RX SWIFT
WEAK
VIEWCONTROLLER VIEWCONTROLLER
OBSERVABLE
CLOSURE
SUBSCRIBING
RX SWIFT
WEAK
VIEWCONTROLLER VIEWCONTROLLER
OBSERVABLE
CLOSURE
SUBSCRIBING
RX SWIFT
WEAK
VIEWCONTROLLER VIEWCONTROLLER
OBSERVABLE
CLOSURE
WTF!!
THANK YOU
RX COCOA

[Rx] rx cocoa