OC语言——block

来源:互联网 发布:盗墓java 编辑:程序博客网 时间:2024/06/05 14:14

block用来保存一段代码,标志:^

block跟函数很像,可以保存代码,有返回值,有行参,调用方式也一样。

如果block没有行参可以省略后面的小括号。

1.定义没有新参的block变量

void(^myBlock)() = ^{    NSlog(@"----------")};//利用定义的block变量调用block内部的代码myBlock();


2.带参数的block

int(^sumBlock)(int, int) = ^(int a, int b){    return a + b;};int c  = sumBlock(10 ,20);


3.编写一个block,让它输出一条,或者多条直线。

void(^lineBlock)(int) = ^(int n){    for(int i = 0; i<n; i++){        NSLog(@"------------");    }};

// 输出3条直线lineBlock(3);

4.使用typedef定义block

typedef int (^MyBlock)(int, int);MyBlock sumBlock;sumBlock = ^(int a, int b){    return a+b;};

或者

MyBlock sumBlock = ^(int a, int b){    return a+b;};


注意点:调用的时候不能使用MyBlock,而是用变量名来调用

// 输出上述结果
NSLog(@"%d-%d",sumBlock(10, 9));

5.block内部可以访问外面的变量

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

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

int  a  = 10;_block int  b = 20;
void(^block)();block = ^{    NSLog(@"a = %d,  a);    b = 90;}


0 0
原创粉丝点击