黑马程序员——IOS基础——Block
来源:互联网 发布:西安软件行业 编辑:程序博客网 时间:2024/04/30 11:16
------- android培训、java培训、期待与您交流!
Block 封装了一段代码,可以在任何时候执行
Block可以作为函数参数或者函数的返回值,而起本身又可以带输入参数或返回值
多用于 多线程、异步任务、集合遍历、集合排序、动画转场等
block总结:
1.>定义block变量:
int (^sumBlock)(int ,int);
void (^myBlock)();
2.>利用block封装代码
^(int a,int b){
return a - b;
}
^{
NSLog(@"");
}
3.>block访问外部变量
block 内部可以访问外面的变量
默认情况下,block内部变量不能修改外面的局部
给局部变量加上__block关键字,这个局部变量就可以在block内部修改
4.>利用typedef定义block类型
typedef int (^MyBlock)(int,int);
//test3:利用typedef 简化声明定义block
typedef int (*SumP)(int,int);typedef int (^MyBlock)(int,int);int sum(int a,int b){return a+b;}void test4(){SumP p = sum;SumP p2 = sum;MyBLock = sumBlock;sumBlock = ^(int a,int b){return a+b;};MyBlock = minusBlock(^int a,int b){return a-b;};NSLog(@"%d - %d",sumBlock(10,9),minusBlock(10,5));}
//test3:block修改外部的变量
void test3(){int a = 10;__block int b = 20;void (^block)();block=^{//block 内部可以访问外面的变量NSLog(@"a = %d",a);//默认情况下,block内部变量不能修改外面的局部a = 20;//这是不可以的//给局部变量加上__block关键字,这个局部变量就可以在block内部修改b = 25;};block();}
//test2:有返回值,有形参的block
void test(){int (*sumpoint)(int,int) = sum; //可以对比一下int d = p(10,13);int (^sumblock)(int,int)=^(int a,int b){ return a+b;}int c = sumblock(10,11);NSLog(@"%d",c);void (^lineBlock)(int) = ^(int n){for(int i=0;i<n;i++){NSLog(@"----------------");}};lineBlock(5);//输出五条线return 0;}
//test1:没有返回值,没有形参的block
void test1(){//block 用来保存一段代码//block的标志: ^/*block跟函数很像:1.可以保存代码2.有返回值3.有形参4.调用方式一样*///定义block变量void (^myblock)() = ^{ /^() 可以省略括号NSLog(@"----------");NSLog(@"----------");};//利用block变量调用block内部的代码myblock();//int a = 10;相似return 0;}
------- android培训、java培训、期待与您交流!
0 0
- 黑马程序员——IOS基础——Block
- 黑马程序员——零基础学习iOS开发——12 Object-C block、protocol
- 黑马程序员—IOS基础之OC—block和protocol
- 黑马程序员——ios基础---Objective-C:ARC、类别、Block、协议
- 黑马程序员——block
- 黑马程序员——OC基础04—block、protocol
- 黑马程序员——OC基础---block,protocol
- 黑马程序员——OC基础---Block、protocol
- 黑马程序员——OC基础之Block
- 黑马程序员——ios学习笔记 OC 协议&Block
- 黑马程序员—IOS加强视频—@block
- 黑马程序员———ios基础
- 黑马程序员——OC语言Block
- 黑马程序员——block与protocol
- 黑马程序员-IOS-OC基础-Block
- 黑马程序员——IOS基础(OC基础)
- 黑马程序员——ios基础---Objective-C:基础语法
- 黑马程序员——OC语言基础篇---block和protocol
- 10大清宿便排毒方法及简单排毒瘦小腹运动
- Android开发の五大布局
- PHP连接SAE平台MYSQL
- 多线程之原子操作
- Statement和PreparedStatement区别
- 黑马程序员——IOS基础——Block
- 2014-第七周项目一---体验深复制
- 通过Excel直接操作数据库DB的工具
- javax.validation.UnexpectedTypeException: No validator could be found for type: java.lang.Integer
- Unit6--ptoblem1-深复制
- 使用Jquery Ajax的webservice请求来实现更简练的Ajax
- Libcurl简明使用指南
- Swing JTable使用
- 伤钱伤感情 10件不能和亲戚一起干的事儿