【iOS编程思想】ReactiveCocoa (2)信号的订阅、取消订阅、接收

news/2025/1/15 13:54:21/

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

订阅信号及接收

1、创建信号(冷信号)

创建信号,需要传入订阅者

//didSubscriber 调用:只要一个信号被订阅就会调用
//didSubscriber 作用:发送数据
RACDisposable * (^didSubscribe)(id <RACSubscriber> subscriber) = ^RACDisposable * (id <RACSubscriber> subscriber) {NSLog(@"信号被订阅");//3 发送数据[subscriber sendNext:@1];return nil;
};//1 创建信号(冷信号)
RACSignal * signal = [RACSignal createSignal:didSubscribe];

2、订阅信号(热信号)

//2 订阅信号(热信号)
[signal subscribeNext:^(id x) {//nextBlock 调用:只要订阅者发送数据就会调用//nextBlock 作用:处理数据,展示到UI上面//x:信号发送的内容NSLog(@"信号发送的内容:%@",x);}];

3、发送信号

这一步,在创建信号时(第一步,穿件订阅者时)已经写好!

运行结果:

175528_w5ro_2279344.png

取消订阅及接收

1、创建信号

RACSignal * signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {NSLog(@"信号被订阅");//3 发送信号[subscriber sendNext:@"123"];return [RACDisposable disposableWithBlock:^{//只要信号取消订阅 就会执行这//清空资源NSLog(@"信号被取消订阅了");}];}];

2、订阅信号

RACDisposable * disposable = [signal subscribeNext:^(id x) {NSLog(@"信号发送的内容:%@",x);
}];

3、取消订阅

[disposable dispose];

运行结果:

175756_I7KS_2279344.png

一个实例:

有一个BlueView,点击其上的按钮,在BlueView类中发送信号,在控制器中接收到信号。

1、BlueView中的信号属性:

@interface BlueView : UIView@property (nonatomic, strong)RACSubject * btnClickSignal;@end

懒加载信号属性:

- (RACSubject *)btnClickSignal{if (!_btnClickSignal) {_btnClickSignal = [RACSubject subject];}return _btnClickSignal;
}

2、发送信号:

点击按钮事件触发发送信号。

- (IBAction)btnClick:(id)sender{NSLog(@"发送了信号");//发送信号[self.btnClickSignal sendNext:@"我被点击了"];
}

3、在控制器中接收信号:

//接收信号
[_blueView.btnClickSignal subscribeNext:^(id x) {NSLog(@"接收到的信号:%@",x);
}];

运行点击按钮,打印结果:

180413_Fiwo_2279344.png

至此我们学习了解了,RAC对信号的订阅、取消订阅、接收等处理。

Github:

https://github.com/ly918/Demos

转载于:https://my.oschina.net/Misayalvyuan/blog/724243


http://www.ppmy.cn/news/748596.html

相关文章

iOS自动订阅商品(Auto-Renewable Subscriptions)相关处理

来源&#xff1a;http://blog.csdn.net/xyxjn/article/details/17412453 由于网上有关自动订阅的信息较少&#xff0c;自己姑且整理一下目前接触到的信息&#xff0c;希望能够对一些朋友有所帮助&#xff0c;如有疑问欢迎随时留言交流。 相关内容可参见苹果官方文档&#xff1a…

IOS开发 NSNotificationCenter

NSNotificationCenter的用途 在iOS应用程序中&#xff0c;有时需要在不同的对象之间传递消息。例如&#xff0c;当用户点击一个按钮时&#xff0c;您可能需要通知其他视图控制器或模型对象&#xff0c;以便它们可以执行某些操作。此NSNotificationCenter就派上了用场。 NSNot…

如何在iPhone或iPad上检查和取消订阅自动续费

现在大部分应用程序和服务会员都开通了订阅功能。一般情况下&#xff0c;自动续费会比购买月度、季度、年度会员要优惠很多&#xff0c;因此&#xff0c;很多用户在购买会员时选择订阅。 对于iPhone和iPad用户&#xff0c;经常是通过Apple ID进行订阅付费。很多时候&#xff0…

苹果订阅测试总结

1. 参考文档 官方文档-介绍App内购买项目订阅优惠的对比官方文档-订阅介绍优秀博文1优秀博文2 2. 配置总结&#xff08;对两篇优秀博文的补充&#xff09; 推荐促销优惠适用顾客&#xff1a;凡是没有购买过这个订阅群组的推荐促销优惠的appid都可以享受一次优惠 促销优惠适用…

iOS内购(IAP)自动续订订阅

一、介绍 iOS 的 App 内购类型有四种&#xff1a; 消耗型商品&#xff1a;只可使用一次的产品&#xff0c;使用之后即失效&#xff0c;必须再次购买。示例&#xff1a;钓鱼 App 中的鱼食。 非消耗型商品&#xff1a;只需购买一次&#xff0c;不会过期或随着使用而减少的产品。示…

后端做app连续会员包月功能 -- IOS连续订阅 支付宝周期扣款

IOS连续订阅总结 如何判断后续用户是续费 1. 服务端轮询续费表&#xff0c;会员到期的前一天&#xff0c;根据用户id。去苹果服务器检验用户是否续费成功a. 查询的状态应有&#xff1a;等待扣费、扣费失败b. 扣费失败 , 对于扣费失败的用户, 苹果仍会尝试扣款60天, 此时应该标…

iOS开发者因“自动订阅”被拒N次最终过审的心路历程

我有位刚入行的开发者朋友&#xff08;以下简称小张&#xff09;&#xff0c;最近在操作订阅这一块的时候的时候&#xff0c;遇到了很多问题&#xff0c;原本以为只是一些小小的问题&#xff0c;没想到他却因此连续被拒了4次&#xff0c;整整持续了十几天时间&#xff01;下面我…

iOS订阅测试终极指南The Ultimate Guide to iOS Subscription Testing

订阅测试如何测试呢&#xff1f;平时遇到的都是消耗型商品&#xff0c;没有持续性&#xff0c;买完就完了&#xff0c;而订阅型是一个持续时间段&#xff0c;这个时间内有很多故事发生&#xff0c;测试起来相对也是复杂的多。找到一篇文章&#xff0c;参考下&#xff1a; 找到…