iOS 开发之 ReactiveCocoa(进阶)

Map : 映射

输入Ricky:

 

206254-45bce74036477948

结果:

206254-6e518ad3c09a07da

结果

filter: 过滤

同样输入Ricky结果就是:

206254-52a6f045b0174ffd

delay:延时

startWith:在发送消息之前,先发送一个消息

 

206254-f5e5ea0b808c7f80

timeout :超时

take :发送多个消息的时候,取最前面的几条

 

206254-b2f870e8d189a9b3

takelast :发送多个消息的时候,取最后面的几条

takeUntil: RACSignal (发送在takeUntil后面的信号完成前的消息)

 

206254-abb3c521ba985599

takeWhileBlock :当takeWhileBlock返回YES的时候发送消息

skip: 跳过

skipWhileBlcok 和 skipUntilBlcok

  • skipWhileBlcok:当Block返回YES的时候跳过,返回No的时候发送.
  • skipUntilBlcok: skipUntilBlcok和skipWhileBlcok相反,当Block返回NO的时候跳过,返回YES的时候发送.

结合及时搜索优化

当我们在做及时搜索的时候,例如在UITextField中输入搜索内容,每当我们输入一个字符的时候当会请求服务器,无形中给服务器带来了很大的压力

206254-be68a6ef4d0cedc4

  • 优化请求时间间隔:throttle(节流)

throttle:设置一个间隔时间,当两次信号之间的时间差下于这个时间就不会发送请求

 

206254-11636a4e352a598a

 

  • distinctUntilChanged: 优化请求字符一样的时候(当后一个请求和前一个请求一样的时候,就可以不用请求)

 

206254-c1d67343c81836e7

 

  • ignore :忽略某些 例如上面的空字符

206254-80be0b3f3a298e9b

  • switchToLatest :当你请求数据的时候,网络会有延迟,数据还没有返回回来,这时候你发送了新的请求,则我们取消前一次的请求,只发送最新的请求.

多个信号处理

merge: 同时订阅2个信号

 

206254-dc61b5a147ea0317

singalA延迟2秒,singalB延迟5秒,她们相差了3秒.说明他们是同时发送的

concat

singalA完成后 才会订阅singalB 有点像串行队列 A失败了 B就不会被订阅

 

206254-4e4b0eaa6faac5c0

 

singalA延迟2秒,singalB延迟5秒,她们相差了5秒.说明A发送完,B才发送的.

zipWith和combineLatest:每个信号都至少要发送一次才可以被订阅.

 

206254-65a02dff0d8dea2f

RAC中的宏(结合例子)

  • UIButton中没有setbackgroundColor forstatus这个方法,使用RAC很简单实现

  • RAC快速实现秒表

206254-ca19ec81cdc8070b

1 4 收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部