Skip to content

Instantly share code, notes, and snippets.

@yoching
Last active August 3, 2016 14:24
Show Gist options
  • Select an option

  • Save yoching/585def49975b711e2de5418ee27bc2cb to your computer and use it in GitHub Desktop.

Select an option

Save yoching/585def49975b711e2de5418ee27bc2cb to your computer and use it in GitHub Desktop.
Questions about RAC signal deallocation.
// 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