RACSerialDisposable.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. //
  2. // RACSerialDisposable.h
  3. // ReactiveObjC
  4. //
  5. // Created by Justin Spahr-Summers on 2013-07-22.
  6. // Copyright (c) 2013 GitHub, Inc. All rights reserved.
  7. //
  8. #import "RACDisposable.h"
  9. NS_ASSUME_NONNULL_BEGIN
  10. /// A disposable that contains exactly one other disposable and allows it to be
  11. /// swapped out atomically.
  12. @interface RACSerialDisposable : RACDisposable
  13. /// The inner disposable managed by the serial disposable.
  14. ///
  15. /// This property is thread-safe for reading and writing. However, if you want to
  16. /// read the current value _and_ write a new one atomically, use
  17. /// -swapInDisposable: instead.
  18. ///
  19. /// Disposing of the receiver will also dispose of the current disposable set for
  20. /// this property, then set the property to nil. If any new disposable is set
  21. /// after the receiver is disposed, it will be disposed immediately and this
  22. /// property will remain set to nil.
  23. @property (atomic, strong, nullable) RACDisposable *disposable;
  24. /// Creates a serial disposable which will wrap the given disposable.
  25. ///
  26. /// disposable - The value to set for `disposable`. This may be nil.
  27. ///
  28. /// Returns a RACSerialDisposable.
  29. + (instancetype)serialDisposableWithDisposable:(nullable RACDisposable *)disposable;
  30. /// Atomically swaps the receiver's `disposable` for `newDisposable`.
  31. ///
  32. /// newDisposable - The new value for `disposable`. If the receiver has already
  33. /// been disposed, this disposable will be too, and `disposable`
  34. /// will remain set to nil. This argument may be nil.
  35. ///
  36. /// Returns the previous value for the `disposable` property.
  37. - (nullable RACDisposable *)swapInDisposable:(nullable RACDisposable *)newDisposable;
  38. @end
  39. NS_ASSUME_NONNULL_END