block

2019-05-06  本文已影响0人  ljzza

1Block 封装了一段代码,可以在任何时候执行

2Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值

Block的标志:^

//block跟函数很像,可以保存代码,有返回值,有形参

指向函数的指针

定义Block,定义时候不会被执行(没有参数,没有形参的block)

void (^myblock)() = ^{ NSLog(@“sdfdsfsdf")}; 如果没有形参可以省略后面的()

调用Block变量调用block内部的代码

myblock();

int (^sumBlock)(int,int)= ^(int a,int b){

return  a+b;

};

int c =    sumblock(10,11);

Block 内部可以访问外面的变量,默认情况下内部不能修改外面的局部变量,给局部变量加上__block关键字,这个局部变量就可以block内部修改

block总结

1.如何定义block变量:

int (^myBlock)();

void (^myBlcok)(int,int);

2如何利用block封装代码:

^(int a,int b){

return a-b;

};

^(){NSLog(@“sdfs”);};

^{NSLog(@“safdds”);};

3 block访问外面变量

blcok内部可以访问外面的变量

默认情况下,block不能修改外面的局部变量

给局部变量加上__block关键字,这个局部变量就可以在block内部修改

4利用typedef定义block类型

typedef (^MyBlock)(int,int);

//以后就可以利用MyBlock这种类型来定义block变量

MyBlock b1,b2;

上一篇 下一篇

猜你喜欢

热点阅读