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

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

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

相关文章

HALCON示例程序measure_pump.hdev螺纹孔位置与尺寸测量

HALCON示例程序measure_pump.hdev螺纹孔位置与尺寸测量 示例程序源码(加注释) 关于显示类函数解释 dev_update_var (‘off’) dev_update_off () read_image (Image, ‘pumpe’) get_image_size (Image, Width, Height) dev_close_window () dev_open_…

计算机视觉和图形学中的摄像机内参数矩阵详解

在计算机视觉和图形学中都有“摄像机内参数矩阵”这个概念,其含义大致相同,但在实际使用过程中,这两个矩阵却相差甚远。在增强现实中,为了使计算机绘制的虚拟物体和真实环境图像对其,需要令虚拟摄像机的内参数和真实摄…

c#和html方法互调

具体见连接:https://www.cnblogs.com/zeroLove/p/3912460.html转载于:https://www.cnblogs.com/gaara-zhang/p/8746403.html

数据库基础杂记

sql,Structured Query Language结构化查询语言。SQL 是一门 ANSI(美国国家标准局) 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Ora…

很有用的X264和ffmpeg的设置

很有用的X264和FFMPEG的设置 http://www.360doc.com/content/11/0209/16/3705984_91612512.shtml 点击打开链接

HALCON示例程序measure_ring.hdev齿轮齿宽度测量

HALCON示例程序measure_ring.hdev齿轮齿宽度测量 示例程序源码(加注释) 关于显示类函数解释 read_image (Image, ‘rings_and_nuts’) dev_close_window () dev_open_window_fit_image (Image, 0, 0, 640, 640, WindowHandle) set_display_font (Windo…

基于RBGD的mapping

最近学习RGBD的SLAM,收集了两个RGBD的mapping的开源工具包 1.RGBDSlam2 a.安装方法: #准备工作空间 source /opt/ros/indigo/setup.bash mkdir -p ~/rgbdslam_catkin_ws/src cd ~/rgbdslam_catkin_ws/src catkin_init_workspace cd ~/rgbdslam_catkin_ws…

【瓜分5000元奖金】Wannafly挑战赛13

链接:https://www.nowcoder.com/acm/contest/80/A来源:牛客网 zzy的小号 时间限制:C/C 1秒,其他语言2秒空间限制:C/C 262144K,其他语言524288K64bit IO Format: %lld题目描述 学家zzy根据字体的特点&#…

X264参数设定详细解释

x264 core:65 r1074M b6bb3d4 Syntax: x264 [options] -o outfile infile [widthxheight] 语法(命令行写法):x264 [参数] -o 输出文件名 输入文件名 [宽x高] 范例: x264 --crf 26 --ref 3 --mixed-refs --bframes 3 --b-adapt 2 --b-pyramid --weightb -…

20145217《网络对抗》 恶意代码分析

20145217《网络对抗》 免杀原理与实践 知识点学习总结 进行恶意代码分析之前必须具备以下知识:编程、汇编/反汇编、网络基本知识、PE文件结构以及一些常用行为分析软件。 一、在一个已经感染了恶意代码的机器上如何找到病毒文件? 找到恶意代码才能对其分…

HALCON示例程序measure_screw.hdev螺纹尺寸测量

HALCON示例程序measure_screw.hdev螺纹尺寸测量 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () read_image (Image, ‘screw_thread’) get_image_pointer1 (Image, Pointer, Type, Width, Height) dev_close_window () dev_open_window…

边工作边刷题:70天一遍leetcode: day 97-2

Design Hit Counter 要点:因为是second granularity,所以可以用以秒为单位的circular buffer方法。这题简单在只需要count过去300秒的,增加难度可以count过去秒,分钟,小时。 2个时间点都有可能更新超时的统计&#xff…

cvRemap 对图像进行普通几何变换

cvRemap 对图像进行普通几何变换 函数 cvRemap 利用下面指定的矩阵变换输入图像:   dst(x,y)<-src(mapx(x,y),mapy(x,y))   与其它几何变换类似&#xff0c;可以使用一些插值方法&#xff08;由用户指定&#xff0c;同cvResize&#xff09;来计算非整数坐标的像素值 vo…

disconf(二):服务端使用总结

1、服务端原理客户端启动&#xff0c;把配置文件&#xff0c;配置项存到仓库&#xff0c;等到服务端启动&#xff0c;从服务端拉取数据&#xff1b;服务端更新&#xff0c;则通过zk通知客户端&#xff0c;客户端知道更新后&#xff0c;会从服务端拉取最新的配置文件&#xff0c…

B2C和B2B之间有多大差距

从产品应用的角度&#xff0c;我们团队经历了企图将B2C系统套用到B2B业务流程上的阶段&#xff0c;对于自营业务这还勉强可以实施&#xff0c;但对于外部用户的实施难度就太大了&#xff0c;用户体验也不好。这个过程中&#xff0c;我只关注了技术范畴的迭代速度、而忽略了用户…

h.264 视频解码的一点小经验(ffmpeg)

最近做视频文件264解码&#xff0c;由于对这个领域不是很熟悉&#xff0c;感觉困难重重。不过经过不懈的努力&#xff0c;已经取得一些进展&#xff0c;心里感觉特别庆幸。 刚开始做这个的时候&#xff0c;由于不熟悉&#xff0c;就在网上搜寻资料&#xff0c;网络上的资料虽然…

HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测

HALCON示例程序novelty_detection_dyn_threshold.hdev纱网缺陷检测 示例程序源码&#xff08;加注释&#xff09; 关于显示类函数解释 dev_update_window (‘off’) read_image (Image, ‘plastic_mesh/plastic_mesh_01’) dev_close_window () get_image_size (Image, Width…

配置云服务器 FTP 服务

自己配置的环境: OS: 阿里云 CentOS 6.5 >>Begin: 1. 登录到阿里云服务器(如何登录阿里云服务器), 在root权限下, 通过如下命令安装 vsftp [rootVM_250_202_tlinux ~]# yum install vsftpd 2. 在启动vsftpd服务之前&#xff0c;需要登录云服务器修改配置文件&#xff0c;…

【跃迁之路】【428天】程序员高效学习方法论探索系列(实验阶段185-2018.04.09)...

(跃迁之路)专栏 实验说明 从2017.10.6起&#xff0c;开启这个系列&#xff0c;目标只有一个&#xff1a;探索新的学习方法&#xff0c;实现跃迁式成长实验期2年&#xff08;2017.10.06 - 2019.10.06&#xff09;我将以自己为实验对象。我将开源我的学习方法&#xff0c;方法不断…

opencv中的一些陷阱 坑死我了~~~~(_)~~~~

1.这几天被opencv给坑的够惨&#xff0c;好好的程序&#xff0c;先是因为imread&#xff08;&#xff09;不能读文件&#xff0c;整了很久没整出来&#xff0c;然后改了下path路径&#xff0c;没想到后面彻底奔溃了&#xff0c;&#xff0c;&#xff0c;&#xff0c;前后大概2天…