Blocks
来源:互联网 发布:windows me序列号 编辑:程序博客网 时间:2024/04/30 11:08
--------Blocks
1.Block的简单使用
//返回类型变量名 参数列表 ^插入符 返回类型参数类型 函数体
int (^blocks)(int a) = ^ int (int a) {};
(1)定义block
int (*p)(int, int);
(2)block赋值
block = ^(int age, float height){
NSLog(@"block执行了");
return 0;
};
(3)block调用
//回调
int result = block(23, 1.80);
NSLog(@"result = %d", result);
2.Block的内存管理
引用局部变量:
(1)block引用局部变量时,该变量会作为常量编码到block块中
(2)局部变量需要使用__block修饰,才能在block块中修改
即:block调用局部基本数据类型变量,进入到block里面,变量会变成常量;如果添加了关键字__block,那么在block里面变量就是同一个变量,那么我们就可以修改(我们也可以替换成static)
(3)block调用局部OC对象,该对象会被retain(注意:block在堆上才会起retain作用)
block在栈上不会做retain操作,只有当copy到堆内存中才会起作用
此时如果局部变量OC对象用__block修饰,则不会被retain
(4)在block里面引用一个实例变量时,该对象所在的对象会被retain
- blocks
- Blocks
- Blocks
- Blocks
- Blocks
- Blocks
- Blocks
- Blocks
- 15.2 Blocks
- Delimiting Blocks
- Code::Blocks
- Code::Blocks
- poj2363-blocks
- blocks学习
- blocks 学习
- Code::Blocks
- IOS Blocks
- Code::Blocks
- bootstrap的web前端模板
- mac下java 开发环境搭建
- GOF23设计模式之适配器模式的实现
- jQuery Validate验证框架详解
- volocity脚本语法
- Blocks
- JS前台加密,java后台解密实现
- 获取文件CRC和MD5
- memset函数初始化数组简单解释,忽略复杂的原理~~~
- JAVA总结的实用小常识
- PAT (Basic Level) Practise (中文)
- 2016微软笔试题
- DSD音频基本原理
- 【dubbo】-003 dubbo中 ZooKeeper的安装