ReactiveCocoa之RAC映射(七)

前端之家收集整理的这篇文章主要介绍了ReactiveCocoa之RAC映射(七)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    @H_404_1@ -(void)map{
  1. //Map使用步骤:
  2. //1.传入一个block,类型是返回对象,参数是value
  3. //2.value就是源信号的内容,直接拿到源信号的内容做处理
  4. //3.把处理好的内容,直接返回就好了,不用包装成信号,返回的值,就是映射的值。
  5. //Map底层实现:
  6. //0.Map底层其实是调用flatternMap,Map中block中的返回的值会作为flatternMap中block中的值。
  7. //1.当订阅绑定信号,就会生成bindBlock。
  8. //3.当源信号发送内容,就会调用bindBlock(value,*stop)
  9. //4.调用bindBlock,内部就会调用flattenMap的block
  10. //5.flattenMap的block内部会调用Map中的block,把Map中的block返回的内容包装成返回的信号。
  11. //5.返回的信号最终会作为bindBlock中的返回信号,当做bindBlock的返回信号。
  12. //6.订阅bindBlock的返回信号,就会拿到绑定信号的订阅者,把处理完成的信号内容发送出来。
  13. //Map作用:把源信号的值映射成一个新的值
  14. //创建信号
  15. RACSubject*subject=[RACSubjectsubject];
  16. //绑定信号
  17. RACSignal*bindSignal=[subjectmap:^id(idvalue){
  18. //返回的类型就是你需要映射的值
  19. return[NSStringstringWithFormat:@"ws:%@",value];//这里将源信号发送的“123”前面拼接了ws:
  20. }];
  21. //订阅绑定信号
  22. [bindSignalsubscribeNext:^(idx){
  23. NSLog(@"%@",x);
  24. //发送信号
  25. [subjectsendNext:@"123"];
  26. }
  27. /*
  28. FlatternMap和Map的区别
  29. 1.FlatternMap中的Block返回信号。
  30. 2.Map中的Block返回对象。
  31. 3.开发中,如果信号发出的值不是信号,映射一般使用Map
  32. 4.开发中,如果信号发出的值是信号,映射一般使用FlatternMap。
  33. */
  34. -(void)flatMap{
  35. flattenMap:^RACStream*(//block:只要源信号发送内容就会调用
  36. //value:就是源信号发送的内容
  37. //返回信号用来包装成修改内容的值
  38. return[RACReturnSignalreturn:value];
  39. //flattenMap中返回的是什么信号,订阅的就是什么信号(那么,x的值等于value的值,如果我们操纵value的值那么x也会随之而变)
  40. //订阅信号
  41. //发送数据
  42. [subjectsendNext:@"123"];
  43. }
  44. void)flattenMap2{
  45. //flattenMap主要用于信号中的信号
  46. //signalOfsignals用FlatternMap
  47. //创建信号
  48. RACSubject*signalofSignals=[RACSubjectsubject];
  49. RACSubject*signal=[RACSubject
  50. [[signalofSignalsreturnvalue;
  51. }]idx){ //subscribeNext:调用bind 的@autoreleasepool{ } 会将subscribeNext:生成subscriber 保存到RACSubject中
  52. //发送信号
  53. [signalofSignalssendNext:signal]; // 会执行 80行的returnvalue;
  54. [signalsendNext:@"123"]; // 会执行 82行的NSLog(@"%@",x);
  55. }
原文链接:https://www.f2er.com/react/305644.html

猜你在找的React相关文章