Block的循环引用详解
1.首先我们创建了一个网络请求工具类
然后storyboard里面去创建了一个导航控制器 并且把它设置为初始控制器 然后拖入一个bar button --show--到自带的控制器
这个时候运行代码的结果是
x
显然这个时候没有造成循环引用
为什么呢??????????????????
//没有self的时候是没有循环引用的
//tools是一个局部的变量 执行完了就会被释放掉了
//这个时候出现了self没有出现循环引用 控制器也被释放了
//block是右边的finished finished 对这个self.view进行强引用 finished执行完毕了然后就释放掉了 会解除对self的强引用 并不会对self产生循环引用
例子2:
如果这个时候我们对控制器里面的那个networktools 中的tools对象来一个strong的强引用而不是copy的话
这个时候的结果还是和之前是一样的为什么???
控制器对self的解除引用是在finished执行完毕的时候
对这个tools的强引用没有关系
例子3:
block是一组准备好的代码 在需要的时候执行 可以当作参数传递
在异步的方法中能够执行block 的话就直接执行 如果当前方法不能直接执行block 通常需要定义一个属性 记录block 在需要的时候执行
上图了:
这个时候期待的循环引用就出现了
转载于:https://www.cnblogs.com/Ninesday/p/5644954.html
Block的循环引用详解相关推荐
- 批处理命令 For循环命令详解!
批处理for命令详解 FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式(这里我引用的是批处理中的格式,直接在命令行只需要一个%号) FOR 参数 %%变量名 IN ( ...
- smarty手册-smarty中foreach循环语句详解
原文地址:smarty手册-smarty中foreach循环语句详解作者:谭博 {foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其 ...
- 终极dos批处理循环命令详解
---恢复内容开始--- 终极dos批处理循环命令详解 格式:FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令 ...
- Spring——三级缓存解决循环依赖详解
三级缓存解决循环依赖详解 一.什么是三级缓存 二.三级缓存详解 Bean实例化前 属性赋值/注入前 初始化后 总结 三.怎么解决的循环依赖 四.不用三级缓存不行吗 五.总结 一.什么是三级缓存 就是在 ...
- Spring循环依赖详解
Spring循环依赖详解 什么是循环依赖 spring是如何解决循环依赖 循环源码分析 getSingletion方法 getSingleton spring开启代理对象的地方 循环依赖的限制条件 什 ...
- PHP之PHP文件引用详解
HP的文件引用涉及到四个函数: 文件引用 1.include() 2.include_once() 3.require() 4.require_once() 这四个函数常常会给PHP初学者造成困扰,总 ...
- csh for循环_shell中的for循环用法详解_linux shell
这篇文章主要介绍了shell中的for循环用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 for 命令: for i i ...
- python编译器怎么运行不在路径中的py文件_对python当中不在本路径的py文件的引用详解...
众所周知,如果py文件不在当前路径,那么就不能import,因此,本文介绍如下两种有效的方法: 方法1: 修改环境变量,在~/.bashrc里面进行修改,然后source ~/.bashrc 方法2: ...
- java foreach标签_Java中Velocity foreach循环标签详解
Java中Velocity foreach循环标签详解 Java Velocity中foreach循环可以很容易的遍历数组或者集合. 定义 #foreach( $elem in $allElems) ...
最新文章
- 从对话框中传递参数到视图类
- [jQuery基础] 初识jQuery
- scrapy配合selenium爬取需要反复操作同一个动态页面的方法,解决点击“下一页”但是URL相同的网站
- golang mysql连接池原理_redis mysql 连接池 之 golang 实现
- Python入门学习笔记(1)
- linux挂载硬盘_Linux把内存挂载成硬盘提高读写速度-内存虚拟盘
- BW报表igs服务配置解决中文显示问题
- 用MATLAB 读写各种文件 ∈ Matlab 使用笔记
- C# Socket通信服务器编写
- java对接短信接口
- 中兴新支点操作系统上如何查找文件
- 艾司博讯:拼多多拼单人数不够怎么取消
- JavaScript中的Map、Set及其遍历
- 从零实施ERP如何成功
- linux环境搭建实践总结,linux实习心得体会
- java---interrupt、interrupted和isInterrupted的区别
- [转]	 世界上排名前100的英文歌—终于找全了
- Gliding vertex on the horizontal bounding box for multi-oriented object detection 问答
- html如何设置绝对定位,css教程之绝对定位使用详解
- 异星工厂联机服务器未响应,《异星工厂》联机教程
热门文章
- ajax绑定事件页面重复提交,ajax防止用户重复提交点击事件
- opencv java库_【OpenCV】java资源
- 上传失败 已保存至草稿_学霸的草稿纸火了,卷面整洁,网友调侃:作业都比不上这草稿本...
- winform响应时间最长是多少分钟_史上最短职业赛是多少时间?《王者荣耀》中国队只花了三分钟...
- Java通过HighCharts导出图表
- [kubernetes] Schedule --- Node调度与隔离
- 【OpenPose-Windows】OpenPose+VS2015+Windows+CUDA8+cuDNN5.1 官方配置教程
- 生成高分辨率pdf_用于高分辨率图像合成的生成变分自编码器
- 为什么各大银行一直在不遗余力推广信用卡呢?
- 多丽丝·莱辛获今年诺贝尔文学奖