initial commit
This commit is contained in:
56
Example/Pods/ReactiveObjC/ReactiveObjC/RACBehaviorSubject.m
generated
Normal file
56
Example/Pods/ReactiveObjC/ReactiveObjC/RACBehaviorSubject.m
generated
Normal file
@@ -0,0 +1,56 @@
|
||||
//
|
||||
// RACBehaviorSubject.m
|
||||
// ReactiveObjC
|
||||
//
|
||||
// Created by Josh Abernathy on 3/16/12.
|
||||
// Copyright (c) 2012 GitHub, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import "RACBehaviorSubject.h"
|
||||
#import "RACDisposable.h"
|
||||
#import "RACScheduler+Private.h"
|
||||
|
||||
@interface RACBehaviorSubject<ValueType> ()
|
||||
|
||||
// This property should only be used while synchronized on self.
|
||||
@property (nonatomic, strong) ValueType currentValue;
|
||||
|
||||
@end
|
||||
|
||||
@implementation RACBehaviorSubject
|
||||
|
||||
#pragma mark Lifecycle
|
||||
|
||||
+ (instancetype)behaviorSubjectWithDefaultValue:(id)value {
|
||||
RACBehaviorSubject *subject = [self subject];
|
||||
subject.currentValue = value;
|
||||
return subject;
|
||||
}
|
||||
|
||||
#pragma mark RACSignal
|
||||
|
||||
- (RACDisposable *)subscribe:(id<RACSubscriber>)subscriber {
|
||||
RACDisposable *subscriptionDisposable = [super subscribe:subscriber];
|
||||
|
||||
RACDisposable *schedulingDisposable = [RACScheduler.subscriptionScheduler schedule:^{
|
||||
@synchronized (self) {
|
||||
[subscriber sendNext:self.currentValue];
|
||||
}
|
||||
}];
|
||||
|
||||
return [RACDisposable disposableWithBlock:^{
|
||||
[subscriptionDisposable dispose];
|
||||
[schedulingDisposable dispose];
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark RACSubscriber
|
||||
|
||||
- (void)sendNext:(id)value {
|
||||
@synchronized (self) {
|
||||
self.currentValue = value;
|
||||
[super sendNext:value];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user