block 相关问题
来源:互联网 发布:linux怎么找漏洞 编辑:程序博客网 时间:2024/06/05 05:38
1、为什么用copy
block本身是像对象一样可以retain,和release。但是,block在创建的时候,它的内存是分配在栈(stack)上,而不是在堆(heap)上。他本身的作于域是属于创建时候的作用域,一旦在创建时候的作用域外面调用block将导致程序崩溃。
使用retain也可以,但是block的retain行为默认是用copy的行为实现的,
2、
__block和__weak有什么区别?
__block
不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。__weak
只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。__block
对象可以在block中被重新赋值,__weak
不可以。循环引用就是当self 拥有一个block的时候,在block 又调用self的方法。形成你中有我,我中有你,谁都无法将谁释放的困局。
self.myBlock = ^{ [self doSomething]; }; +-----------+ +-----------+ | self | | Block | ---> | | --------> | | | retain 2 | <-------- | retain 1 | | | | | +-----------+ +-----------+
又或者ClassA* objA = [[[ClassA alloc] init] autorelease]; objA.myBlock = ^{ [self doSomething]; }; self.objA = objA; +-----------+ +-----------+ +-----------+ | self | | objA | | Block | | | --------> | | --------> | | | retain 1 | | retain 1 | | retain 1 | | | | | | | +-----------+ +-----------+ +-----------+ ^ | | | +------------------------------------------------+
解决方法:__weak typeof (self) weakSelf = self;
0 0
- block 相关问题
- OC中Block相关问题总结
- BLOCK相关
- block相关
- block问题
- linux block层相关
- code::block相关网站
- [iOS]Block相关
- block 相关link
- OC Block相关
- iOS-Block相关
- iOS block相关:weakSelf和block copy
- Hadoop-Block的相关分析
- iOS block相关整理
- inline-block问题
- IOS中Block问题
- CODE BLOCK 配置问题
- block面试问题
- 实例浅析epoll的水平触发和边缘触发,以及边缘触发为什么要使用非阻塞IO
- ionic 中正确使用 SQLite
- HTTP协议详解
- oracle的awr生成报告步骤
- 树莓派摄像头远程和本地观看视
- block 相关问题
- BUI框架2013
- 采用buildroot搭建ARM的交叉编译环境
- mysql存储过程
- 5. 策略模式
- BZOJ4716 假摔
- 百度贴吧客户端(Android)网络通信行为分析
- iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用
- 【蓝桥杯单片机组】DS18B20