Last active
August 3, 2016 14:24
-
-
Save yoching/585def49975b711e2de5418ee27bc2cb to your computer and use it in GitHub Desktop.
Questions about RAC signal deallocation.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // case 1: using pipe | |
| class A { | |
| let signal: Signal<Void, NoError> | |
| let observer: Signal<Void, NoError>.Observer | |
| init() { | |
| (signal, observer) = Signal<Void, NoError>.pipe() | |
| } | |
| deinit { | |
| print("A deinit") | |
| // observer.sendCompleted() // * | |
| } | |
| } | |
| var a: A? | |
| a = A() | |
| a = nil // prints "A deinit" | |
| // -> Will 'signal' be released too? Or, should I call 'observer.sendCompleted()'(*) in deinit closure in A? | |
| // case 2: using SignalProducer | |
| class B { | |
| init() { | |
| SignalProducer<Void, NoError> { observer, disposable in | |
| observer.sendNext() | |
| } | |
| .startWithSignal { signal, disposable in | |
| // When will this 'signal' be released? | |
| } | |
| } | |
| deinit { | |
| print("B deinit") | |
| } | |
| } | |
| var b: B? | |
| b = B() | |
| b = nil // prints "B deinit" | |
| // Will signal created by producer be released? Or, should I call 'observer.sendCompleted()' somehow? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment