admin管理员组

文章数量:1642239

最近在做关于RACSignal的项目,做一下笔记 

//创建一个基本 signal 
RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) { 
    [subscriber sendNext:@"1"]; 
    [subscriber sendNext:@"2"]; 
    [subscriber sendCompleted]; 
    return nil; 
}]; 

//订阅
[signal subscribeNext:^(id _Nullable x) { 
    NSLog(@"%@", x); 
}]; 

//打印
Demo[15054:2153646] 1 
Demo[15054:2153646] 2 
Demo[15054:2153646] dispose 

说明:

  1. subscribeNext,将事件流传递给下一个subscriber。
  2. filter,用来做一些条件判断、筛选。返回值是BOOL。
  3. map,用来转化事件数据类型,比如NSString转成NSNumber。
  4. RAC(self.passwordTextField, backgroundColor),绑定属性作为数据的返回类型。
  5. combineLatest,合并多个信号,combineLatest:@[self.phoneNameRegexSig,self.passwordRegexSig]。
  6. rac_signalForControlEvents,绑定控制事件,用于UIButton等。
  7. createSignal,创建信号。
  8. flattenMap,简化了一步操作,本来是信号A转成信号B调用subscribeNext,B变成了subscribeNext的x;使用flattenMap后,B里面的事件流直接传给了x。
  9. doNext,事件发生时处理的逻辑,放在rac_signalForControlEvents之后。
  10. RACDisposable,手动移除事件流。
  11. 使用@weakify(self)避免循环引用和使用@strongify(self)保存住self对象。
  12. 信号创建之后,需要使用subscribeNext传递事件流,才能使代码执行。
  13. then,等待网络时间处理回调,有效地将控制从一个信号传递给下一个。传递error事件。
  14. deliverOn:[RACScheduler mainThreadScheduler]]转到主线程。
  15. RACScheduler *scheduler subscribeOn:scheduler异步调用。
  16. throttle间隔操作,间隔几秒后执行信号。

 

本文标签: 方法RACSignal