我已经多次阅读文档并需要澄清......
鉴于以下片段:
let signal: Signal<Value,Error>
//call this observer y
signal.take(first: 1).observeValues{ (value) in
//intended strong capture on self. this is the only one that retains self so if this observer is triggered and completes, self should dealloc
self.doSomethingElse(value) //trivial call, no async or thread hopping
}
//call this observer x
signal.take(duringLifetimeOf: self).observeValues{ [unowned self] (value) in //is this safe or better to use weak and guard against it?
self.doSomeProcess(value) //trivial call, no async or thread hopping
}
Ifsignal
被触发并通知其观察者value event
:
1)y
之前会通知观察者x
(假设因为它在队列中更早地被第一次观察到)
2)由于y
在处理完值后会完成,所以self
应该在之后释放
问题:
哪些事件将x
收到(按顺序):
价值和完成度?是否保证在处理价值事件时 self 仍然活着?
只完成?我怀疑是这种情况,但如果是这样,请参考一些文档。因为完成事件不会立即传播。
会为两者使用不同Scheduler
的 sx
并且y
会对结果产生影响吗?
最后,我要介绍race
吗?我对此表示怀疑,因为除非开发人员明确说明,否则 reactiveSwift 不会引入并发性。