OC语言--BLOCK

来源:互联网 发布:忽略的网络怎么恢复 编辑:程序博客网 时间:2024/06/11 05:50

一、BLOCK

BLOCK:封装代码,可以在任何时候执行

block的标志:^

二、BLOCK与函数

block与函数很像:

*可以保存代码
*有返回值
*有形参
*调用方式一样

三、block的定义和使用:

//没有参数void (^myBolck1)() = ^(){    NSLog(@"aaa");    };myblock1();void (^myBolck2)() = ^{    //省去形参括号    NSLog(@"aaa");    };myblock2();//有参数,没有返回值void (^myBlock3)(NSString *) = ^(NSString *name){    NSLog(@"%@", name);    };myBlock3(@"zsling");//有参数,有返回值int (^myBlock4)(int, int) = ^(int a, intb){    return a + b;    };int sum = myBlock4(1, 2);/*作用等同于上int (^myBlock4)(int, int);myBlock = ^(int a, int b){    return  a + b;    };int sum = myBlock4(1, 2);*/

四、block访问外部变量

void main(){    int a = 10;    __block int b = 20;    void (^myBlock5) = ^{        //a = 13;    //默认情况下,block内部不能修改外部的局部变量        b = 30;        //外部局部变量加上__block关键字,在block内部可修改此局部变量        NSLog(@"%d", a);    //block内部可以访问外部变量    }}

五、利用typedef定义block类型

typedef int(^MyBlock)(int, int);    //方法与指向函数的指针类似 typedef int(*Point)(int, int);MyBlock block;block = ^{    NSLog(@"aaa");}MyBlock sumBlock = ^(int a, int b){    return a + b;    }
0 0
原创粉丝点击