NSNotificationCenter+RACSupport.m 929 B

1234567891011121314151617181920212223242526272829303132
  1. //
  2. // NSNotificationCenter+RACSupport.m
  3. // ReactiveCocoa
  4. //
  5. // Created by Josh Abernathy on 5/10/12.
  6. // Copyright (c) 2012 GitHub. All rights reserved.
  7. //
  8. #import "NSNotificationCenter+RACSupport.h"
  9. #import <ReactiveCocoa/EXTScope.h>
  10. #import "RACSignal.h"
  11. #import "RACSubscriber.h"
  12. #import "RACDisposable.h"
  13. @implementation NSNotificationCenter (RACSupport)
  14. - (RACSignal *)rac_addObserverForName:(NSString *)notificationName object:(id)object {
  15. @unsafeify(object);
  16. return [[RACSignal createSignal:^(id<RACSubscriber> subscriber) {
  17. @strongify(object);
  18. id observer = [self addObserverForName:notificationName object:object queue:nil usingBlock:^(NSNotification *note) {
  19. [subscriber sendNext:note];
  20. }];
  21. return [RACDisposable disposableWithBlock:^{
  22. [self removeObserver:observer];
  23. }];
  24. }] setNameWithFormat:@"-rac_addObserverForName: %@ object: <%@: %p>", notificationName, [object class], object];
  25. }
  26. @end