一般来说我们总会在设置Block之后,在合适的时间回调Block,而不希望回调Block的时候Block已经被释放了,所以我们需要对Block进行copy,copy到堆中,以便后用。 当一个Bloc
来源:互联网 发布:淘宝最近总是查侵权 编辑:程序博客网 时间:2024/06/06 08:41
原文出处:http://blog.csdn.net/zhangao0086/article/details/38273239
一般来说我们总会在设置Block之后,在合适的时间回调Block,而不希望回调Block的时候Block已经被释放了,所以我们需要对Block进行copy,copy到堆中,以便后用。
当一个Block被Copy的时候,如果你在Block里进行了一些调用,那么将会有一个强引用指向这些调用方法的调用者,有两个规则:
如果你是通过引用来访问一个实例变量,那么将强引用至self
如果你是通过值来访问一个实例变量,那么将直接强引用至这个“值”变量
苹果官方文档里有两个例子来说明这两种情况:
上面第一种情况相当于用self.xxx来访问实例变量,所以强引用指向了self;第二种情况把实例变量变成了本地临时变量,强引用将直接指向这个本地的临时变量。大多数情况下,我们只用处理第一种情况就行了,因为第二种情况虽然会造成循环引用,但是临时变量很快就被释放了,不会造成真正的循环引用。要避免强引用到self的话,用__weak把self重新引用一下就行了,像这样:
__weak ViewController *weakSelf = self;
0 0
- 一般来说我们总会在设置Block之后,在合适的时间回调Block,而不希望回调Block的时候Block已经被释放了,所以我们需要对Block进行copy,copy到堆中,以便后用。 当一个Bloc
- 对Block用copy修饰的理解
- block 用copy 原因
- block为什么用copy
- block用copy关键字
- oracle delete 操作后,未释放的block, 在之后的insert操作时,会被重新利用么
- ios-block作为属性的时候为什么用copy
- block揭秘-用block进行回调
- block回调的一个小例子
- 关于 block 中使用copy 需要注意的
- block为什么用copy关键字
- Block为什么用copy修饰
- iOS用copy修饰Block
- block为什么使用copy
- block使用copy原理
- weak assign copy block
- block copy字符修饰
- Block
- cocoapods一些坑
- OpenWrt的luci web管理器添加新菜单(三)
- 欢迎使用CSDN-markdown编辑器
- JSONObject
- Angularjs基础知识
- 一般来说我们总会在设置Block之后,在合适的时间回调Block,而不希望回调Block的时候Block已经被释放了,所以我们需要对Block进行copy,copy到堆中,以便后用。 当一个Bloc
- MVC设计模式
- Java Singleton单例模式
- UML中的关系
- overflow
- 第二章 实现复杂的数据结构
- 乘法口诀表
- Android菜鸟的成长笔记——第一个Activity 和 ADB
- Tomcat