如何避免在Block里用self造成循环引用
原文:http://blog.csdn.net/zhangao0086/article/details/38273239
一般来说我们总会在设置Block之后,在合适的时间回调Block,而不希望回调Block的时候Block已经被释放了,所以我们需要对Block进行copy,copy到堆中,以便后用。
当一个Block被Copy的时候,如果你在Block里进行了一些调用,那么将会有一个强引用指向这些调用方法的调用者,有两个规则:
- 如果你是通过引用来访问一个实例变量,那么将强引用至self
- 如果你是通过值来访问一个实例变量,那么将直接强引用至这个“值”变量
- __weak ViewController *weakSelf = self;
转载于:https://www.cnblogs.com/liuyingjie/p/5274490.html
如何避免在Block里用self造成循环引用相关推荐
- iOS开发笔记(二):block循环引用
写这篇文章的缘由是第一次面试时被问到了block循环引用的问题,当时回答的不是很好,首先要明确的是,block是否用copy修饰决定不了循环引用的产生,在此再一次进行补强,有不对的地方还请多多指教. ...
- block(六)循环引用-b
在ARC与非ARC环境下对block使用不当都会引起循环引用问题,一般表现为,某个类将block作为自己的属性变量,然后该类在block的方法体里面又使用了该类本身,简单说就是self.theBloc ...
- Block 的循环引用
Block是在栈上生成的,所以一般使用copy方法把Block复制到堆上,避免Block被立刻释放. Block会对内部的变量形成强引用,而如果同时该变量又持有这个Block,就会导致循环引用而无法释 ...
- 快速定位Product assignment block里对应的修改逻辑使用的function module
Created by Jerry Wang, last modified on May 16, 2014 假设需要debug Product overview page里当修改Notes assign ...
- block里的self、weakSelf、strongSelf
转自 http://www.cnblogs.com/zhang-chi/p/5532272.html ARC下,关于block里面使用self.weakSelf.strongSelf,理解一直没有特 ...
- Block的循环引用
2019独角兽企业重金招聘Python工程师标准>>> 在ios常见的循环引用中曾经提到过block: 看看上面最基本的block循环应用,self包含block,block包含了s ...
- Block 本质、实现原理、内存管理、循环引用、__block等
一.Block介绍 1.1概念: 将函数及其执行上下文封装起来的对象 底层用struct实现 1.2block实现原理: a .新建项目 代码放入file.m中 b.打开终端cd到项目目录下 c.敲c ...
- iOS block循环引用问题深究
对象A持有对象B,调用B的block参数方法,在里面使用了self.在使用block我们都会默认在里面使用weakself,网上搜了很多解释都是为了防止循环引用,以防self被持有导致内存泄露. 那么 ...
- ios Block底层详解、框架结构:捕获、对象类型、__block、__forwarding、循环引用
1:捕获 2:block类型 2.1:问题 :mrc环境下 下面讲的都是mrc环境下,会真实很多 2.2:在arc下,block 自动加上copy的情况---:返回block. 2.3:在arc下, ...
最新文章
- 问题总结两天来两场实习面试(中科创达、华为)
- 近期活动盘点:第一届“数据故事计划”、 第三届搜狐校园算法大赛
- python教程实例-python教程实例
- QT4到QT5的变化!
- 002 PECompact 1.84
- ngrok布置外网访问环境
- 九度OJ #1437 To Fill or Not to Fil
- 一种简易的聊天泡泡设置颜色以及添加描边的方式
- java信号量源代码_Java信号量Semaphore原理及代码实例
- centos 6.5环境利用iscsi搭建SAN网络存储服务及服务端target和客户端initiator配置详解...
- 关于ele框架样式修改
- Packet Tracer 和 Wirshark 抓取数据包
- Vue中使用 Aplayer 和 Metingjs 添加音乐插件
- let , const , var , 的区别
- MapReduce 的基本原理
- HDU - 1495 非常可乐
- 中国(杭州)跨境电子商务综合试验区的实践和探索
- share 分享到其他平台 代码
- Cassandra笔记
- 「国内招聘」软件工程师
热门文章
- Chrome三天内的第二枚0Day
- ctfshow-WEB-web1签到题
- [SQL Server 2014] SQL Server 2014新特性探秘
- 关于ConcurrentDictionary的线程安全
- 快速上手Expression Tree(一):做一做装配脑袋的Expression Tree 习题
- EVENT:10218 dump uba of applied undo
- 精通语言不等于是一个好的软件开发人员
- HOW TO: Troubleshoot development errors in MOSS 2007
- prim算法 最小生成树
- 怎样把gis锯齿边_ArcGIS地图锯齿处理的方法