Skip to content

Commit b62aa6f

Browse files
authored
Merge pull request ReactiveCocoa#154 from zulkis/replay-subject-sendNext-bug-with-values-array-clean-up
Update order of invocation in -sendNext: RACReplaySubject
2 parents a621018 + 35aa8e4 commit b62aa6f

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

ReactiveObjC/RACReplaySubject.m

+2-1
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,12 @@ - (RACDisposable *)subscribe:(id<RACSubscriber>)subscriber {
8585
- (void)sendNext:(id)value {
8686
@synchronized (self) {
8787
[self.valuesReceived addObject:value ?: RACTupleNil.tupleNil];
88-
[super sendNext:value];
8988

9089
if (self.capacity != RACReplaySubjectUnlimitedCapacity && self.valuesReceived.count > self.capacity) {
9190
[self.valuesReceived removeObjectsInRange:NSMakeRange(0, self.valuesReceived.count - self.capacity)];
9291
}
92+
93+
[super sendNext:value];
9394
}
9495
}
9596

ReactiveObjCTests/RACSubjectSpec.m

+15
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,21 @@ - (void)didSubscribeWithDisposable:(RACCompoundDisposable *)disposable {
9696
qck_beforeEach(^{
9797
subject = [RACReplaySubject replaySubjectWithCapacity:1];
9898
});
99+
100+
qck_it(@"should send same latest value to multiple subscribers in another subscription", ^{
101+
__block NSMutableArray *values = [NSMutableArray array];
102+
103+
[subject subscribeNext:^(id _Nullable item1) {
104+
[values addObject:item1];
105+
[[subject take:1] subscribeNext:^(id _Nullable item2) {
106+
[values addObject:item2];
107+
}];
108+
}];
109+
[subject sendNext:@1];
110+
[subject sendNext:@2];
111+
112+
expect(values).to(equal(@[@1, @1, @2, @2]));
113+
});
99114

100115
qck_it(@"should send the last value", ^{
101116
id firstValue = @"blah";

0 commit comments

Comments
 (0)