看源碼,autoconnect
- (RACSignal *)autoconnect {
__block volatile int32_t subscriberCount = 0;
return [[RACSignal
createSignal:^(id<RACSubscriber> subscriber) {
OSAtomicIncrement32Barrier(&subscriberCount);
RACDisposable *subscriptionDisposable = [self.signal subscribe:subscriber];
RACDisposable *connectionDisposable = [self connect];
return [RACDisposable disposableWithBlock:^{
[subscriptionDisposable dispose];
if (OSAtomicDecrement32Barrier(&subscriberCount) == 0) {
[connectionDisposable dispose];
}
}];
}]
setNameWithFormat:@"[%@] -autoconnect", self.signal.name];
}
在autoconnect里有調(diào)用[connectionDisposable dispose];而ReactiveCoca里的replay族方法如replayLazily,用的connect抡四,卻對返回的connectionDisposable沒有處理,會導(dǎo)致后果 connection.signal結(jié)束了而沒有dispose掉source signal