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的循环引用详解相关推荐

  1. 批处理命令 For循环命令详解!

    批处理for命令详解 FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式(这里我引用的是批处理中的格式,直接在命令行只需要一个%号) FOR 参数 %%变量名 IN ( ...

  2. smarty手册-smarty中foreach循环语句详解

    原文地址:smarty手册-smarty中foreach循环语句详解作者:谭博 {foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其 ...

  3. 终极dos批处理循环命令详解

    ---恢复内容开始--- 终极dos批处理循环命令详解 格式:FOR [参数] %%变量名 IN (相关文件或命令) DO 执行的命令作用:对一个或一组文件,字符串或命令结果中的每一个对象执行特定命令 ...

  4. Spring——三级缓存解决循环依赖详解

    三级缓存解决循环依赖详解 一.什么是三级缓存 二.三级缓存详解 Bean实例化前 属性赋值/注入前 初始化后 总结 三.怎么解决的循环依赖 四.不用三级缓存不行吗 五.总结 一.什么是三级缓存 就是在 ...

  5. Spring循环依赖详解

    Spring循环依赖详解 什么是循环依赖 spring是如何解决循环依赖 循环源码分析 getSingletion方法 getSingleton spring开启代理对象的地方 循环依赖的限制条件 什 ...

  6. PHP之PHP文件引用详解

    HP的文件引用涉及到四个函数: 文件引用 1.include() 2.include_once() 3.require() 4.require_once() 这四个函数常常会给PHP初学者造成困扰,总 ...

  7. csh for循环_shell中的for循环用法详解_linux shell

    这篇文章主要介绍了shell中的for循环用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 for 命令: for i i ...

  8. python编译器怎么运行不在路径中的py文件_对python当中不在本路径的py文件的引用详解...

    众所周知,如果py文件不在当前路径,那么就不能import,因此,本文介绍如下两种有效的方法: 方法1: 修改环境变量,在~/.bashrc里面进行修改,然后source ~/.bashrc 方法2: ...

  9. java foreach标签_Java中Velocity foreach循环标签详解

    Java中Velocity foreach循环标签详解 Java Velocity中foreach循环可以很容易的遍历数组或者集合. 定义 #foreach( $elem in $allElems) ...

最新文章

  1. 从对话框中传递参数到视图类
  2. [jQuery基础] 初识jQuery
  3. scrapy配合selenium爬取需要反复操作同一个动态页面的方法,解决点击“下一页”但是URL相同的网站
  4. golang mysql连接池原理_redis mysql 连接池 之 golang 实现
  5. Python入门学习笔记(1)
  6. linux挂载硬盘_Linux把内存挂载成硬盘提高读写速度-内存虚拟盘
  7. BW报表igs服务配置解决中文显示问题
  8. 用MATLAB 读写各种文件 ∈ Matlab 使用笔记
  9. C# Socket通信服务器编写
  10. java对接短信接口
  11. 中兴新支点操作系统上如何查找文件
  12. 艾司博讯:拼多多拼单人数不够怎么取消
  13. JavaScript中的Map、Set及其遍历
  14. 从零实施ERP如何成功
  15. linux环境搭建实践总结,linux实习心得体会
  16. java---interrupt、interrupted和isInterrupted的区别
  17. [转] 世界上排名前100的英文歌—终于找全了
  18. Gliding vertex on the horizontal bounding box for multi-oriented object detection 问答
  19. html如何设置绝对定位,css教程之绝对定位使用详解
  20. 异星工厂联机服务器未响应,《异星工厂》联机教程

热门文章

  1. ajax绑定事件页面重复提交,ajax防止用户重复提交点击事件
  2. opencv java库_【OpenCV】java资源
  3. 上传失败 已保存至草稿_学霸的草稿纸火了,卷面整洁,网友调侃:作业都比不上这草稿本...
  4. winform响应时间最长是多少分钟_史上最短职业赛是多少时间?《王者荣耀》中国队只花了三分钟...
  5. Java通过HighCharts导出图表
  6. [kubernetes] Schedule --- Node调度与隔离
  7. 【OpenPose-Windows】OpenPose+VS2015+Windows+CUDA8+cuDNN5.1 官方配置教程
  8. 生成高分辨率pdf_用于高分辨率图像合成的生成变分自编码器
  9. 为什么各大银行一直在不遗余力推广信用卡呢?
  10. 多丽丝·莱辛获今年诺贝尔文学奖