程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

小编今日给大家带来RACDisopsable,大家可能有部分人对这个会感觉到很陌生,那么我就用一句话来表达就是他可以帮我们取消订阅。那么又会有人会对这个产生疑问了,我们什么时候需要用到这个取消订阅了打个实际的例子来说吧,今天我在饿了吗App上面选择了商品,快递哥把商品运送到我手上,我不在需要这个商品,或者是我订单有错误,我选择取消订阅商品,这样我们就取消了(例子可能举的不对,还望见谅)说的小编都有一点饿了,先点个饿了么

程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

好了前面都是开一个玩笑,下面进入正题,就我们一起来看看代码实际情况是如何取消订阅

程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

这里小编要提示 一下,在这个流程当中做了一点点小小的改动,请仔细观看就能发现

原本之前要返回的nil,小编这边让它返回我们的RACDisopsable

程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

还是熟悉的Block在这边我们需要来创建这个取消订阅,不是我们熟悉的alloc init,它帮我们都封装好了,温馨提示一下:封装好的东西都会以名字开头来命名的,所以我们要调用的是disposableViewBlock,那么有人又会问了,它什么时候会被调用了?下面请看代码来验证一下他什么时候被调用

程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

代码很清晰,结果显然发现是信号发送完毕之后,我们发现它果然是在这里被调用了!估计又有同学要问了,它到底是怎么取消订阅的呢?

程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

原来取消的原因是因为上面的subscriber不在了,又有问题了:如何去证明呢?

小编在这里有一个想法是不断引用subscriber,如果它一直存在的话,那么是不是取消订阅呢在嘴上上还是纸上谈兵,还是来点实际上代码

程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

看代码上面subscriber成为了强引用,不过小编在这里问一下大家经过强引用之后的subscriber没有被销毁,我们还可以打印出Disposable吗?看到这里是不是应该动动手指敲一敲代码来验证一下呢?小编这边还是献上代码给大家验证一下,希望给大家一点提示

程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

代码的结果证明subscriber依然是存在,所以没有调用Disposable也没有进行打印了到现在从这个实验我们可以得出subscriber的存在跟取消订阅之间的关系之外,我们还可以得出一个结论就是【信号发送完数据会认主取消订阅】但是还是有问题,什么问题呢?这个是自动取消订阅,假设我要手动取消订阅该如何?

程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

上述代码所示可以看到subscribeNext 它是有个返回值RACSubscriber频型,我们接下来拿到这个返回值

程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

拿到了之后我们调用这个dispose方法。这样就是一个手动取消订阅了,我们来看看,如果它真的取消了,那我们就可以看到它会打印Disposable

程序员制作出价值5亿外卖神器却不能取消订单,你知道吗?

到这里相信大家应该看明白了吧,如何手动或者自动的取消订阅,但是在取消订阅里面我们到底在做些什么呢?小编这边要告诉大家,一般情况来说,取消订阅的block里面【清空资源】取消订阅的部分就要暂时先到这里了,希望对大家有所帮助,喜欢的朋友也可以点波收藏,点个赞,评论下小编的不足,小编也会加以改正写出精品文章和大家共享一起学习,一起加油

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《精读 Mastering ABP Framework》教程发布

精读《Mastering ABP Framework》学习总结,掌握软件开发最佳实践,构建可维护 .NET 解决方案。从 ABP Framework 框架中学习如何构建现代 WEB 应用程序。掌握 ABP Framework 框架ABP Framework 是一个完整的基础架构,遵循软件开发最佳实践&…

C# 委托知识总结

1.什么是委托,为什么要使用委托 我正在埋头苦写程序,突然想喝水,但是又不想自己去掉杯水而打断自己的思路,于是我就想让女朋友去给我倒水。她去给我倒水,首先我得让她知道我想让她干什么,通知她之后我可以继…

阿里云大学课程学习有奖征文活动现在开始

2019独角兽企业重金招聘Python工程师标准>>> "学有所获,分享为美"--阿里云大学课程学习有奖征文活动开始啦~~ 看课程,写心得,赢千元大奖,还有机会加入阿里云大学技术作者群!想试试自己的技术文笔…

Android 的系统架构

Android 的系统架构和其它操作系统一样,采用了分层的架构。android 分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和 linux 核心层。 Android 是以 Linux 为核心的手机操作平台,作为一款开放式的操作系统&#xf…

记一次 .NET 某制造业 MES 系统崩溃分析

一:背景 1.讲故事前段时间有位朋友微信找到我,说他的程序偶尔会出现内存溢出崩溃,让我帮忙看下是怎么回事,咨询了下程序是 x86 部署,听到这个词其实心里已经有了数,不管怎么样还是用 windbg 分析一下。二&a…

首次公开!单日600PB的计算力--阿里巴巴EB级大数据平台的进击

摘要: 每年的双11之前,也是MaxCompute各种乾坤大挪移落定的时候,因为双11就是各种大折腾项目的自然deadline。在今年双11之前,一路向北迁移和在离线混部项目,将杭州集群除蚂蚁外整体迁移到张北,涉及了绝大部…

软件测试金字塔

软件测试金字塔 在敏捷方法中,持续集成是其基石,持续集成的核心是自动化测试。下面这篇关于测试金字塔的文章,来自大师Martin Fowler。 测试金字塔的概念来自Mike Cohn,在他的书Succeeding With Agile中有详细描述:测试…

使用pm2守护你的.NET Core应用程序

简介PM2是常用的node进程管理工具,它可以提供node.js应用管理,如自动重载、性能监控、负载均衡等。同类工具有Supervisor、Forever等。pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态,当然也支持性能监控…

程序员搞笑段子

转载于:https://www.cnblogs.com/Zhusi/p/10083474.html

CA周记 - 在 Azure ML 上用 .NET 跑机器学习

.NET 是一个跨平台,全场景应用的开源技术。你有在用 .NET 做机器学习/深度学习的应用吗?如果从框架角度,ML.NET / Tensorflow.NET / 不断在进步的 TorchSharp 通过几年的发展已经开始稳定,但如果在一些大型项目上,特别…

iOS10 优化APP首次安装网络权限提示方案

我刚经历了一场末日(停电),特别是在你想写文档的时候。。。 言归正传,今天的问题是解决iOS10系统下首次按钮APP弹出的网络权限提示所带来了问题以及优化。 起因 查了相关文章知道由于大陆工信部出台的新规指出,应用在未…

su命令

从一个用户切换到另一个用户:su - ceshi(ceshi是用户名) 查看当前用户:whoami 在不切换用户的情况执行另一个用户的命令:例:su - -c "touch /tmp/111.txt" admin 若用户没有加目录需要添加家目录,并更改所有…

PS批量替换内容

在制作图片物料的时候,有时会碰到需要制作大量内容格式一致,但部分文字或图片不同的图片,这里我们使用PS的变量功能 物料准备:准备好需要替换的图片和文字,使用excel制作出需要替换的内容,第一行name和pic…

在 .NET 中执行 JavaScript 代码

你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用!Jint 简介如果您想在您的 .NET 程序中使用 Javascript,那么我推荐您使用 Jint。Jint 是适用于 .NET 的 开源 Javascript 解…

jmeter多用户登录跨线程组操作传值

项目需求: 需要登录两个用户A、B,用户A操作完后会通知B,然后B再操作,B操作完结束或者再通知A。 实现思路: 1. 设置两个线程组Ⅰ、Ⅱ,组Ⅰ添加cookie管理器,里面添加用户A的操作;组Ⅱ…

手动修改美化7zip图标 - 附替换文件

手动修改7zip图标理论知识制作ico图标文件替换资源重建图标缓存效果图替换文件7-Zip的自带图标是公认的丑,所以网上有很多7-Zip的图标美化工具,用的最多的就是 7-Zip Theme Manager,自带很多主题,但是最近我再使用7zTM修改图标是却…

.NET性能优化-复用StringBuilder

在之前的文章中,我们介绍了 dotnet 在字符串拼接时可以使用的一些性能优化技巧。比如:为StringBuilder设置 Buffer 初始大小使用ValueStringBuilder等等 不过这些都多多少少有一些局限性,比如StringBuilder还是会存在new StringBuilder()这样…

如何使用vue组件搭建网页并打包发布

vue组件化项目搭建及编译打包发布引言开发环境开发环境介绍开发环境安装使用模板创建项目编译及打包发布引言 最近开始学习Vue,Vue 是一个前端框架,特点是数据绑定和组件化。网上很多教程,数据绑定和组件学习起来也都不困难,但是…

Facebook揭秘其应用测试平台,并开源核心技术

本周,Facebook让一群记者参观了它位于俄勒冈州普赖恩维尔市的数据中心,在这个过程中也展示了他们的一个移动应用测试实验室,用来测试Facebook app、 Messenger 和Instagram。 目前 这个实验室总共含有60个机架,每个机架上放置32台…

责任链模式 职责链模式 Chain of Responsibility Pattern 行为型 设计模式(十七)

责任链模式(Chain of Responsibility Pattern)职责链模式意图 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系将这些对象连接成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。责任…