首页 > 代码库 > OC--block

OC--block

block用来保存一段代码
block的标志:^
block跟函数很像:
1.可以保存代码
2.有返回值
3.有形参
4.调用方式一样

//定义block变量

void (^myblock)() = ^{
NSLog(@"----------------");
NSLog(@"----------------");
};

//利用block变量调用block内部的代码;
myblock();

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

int c = sumblock(10,11);

/*
指针函数指针
int (*p)(int,int) = sum;
int d = p(10,12);
NSLog(@"%d",d);
*/

/*
block要掌握的东西
1> 如何定义block变量
int (^sumBlock)(int, int);
void (^myBlock)();

2> 如何利用block封装代码
^(int a, int b) {
return a - b;
};

^() {
NSLog(@"----------");
};

^ {
NSLog(@"----------");
};

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

4> 利用typedef定义block类型
typedef int (^MyBlock)(int, int);
// 以后就可以利用MyBlock这种类型来定义block变量
MyBlock block;
MyBlock b1, b2;

b1 = ^(int a, int b) {
return a - b;
};

MyBlock b3 = ^(int a, int b) {
return a - b;
};
*/

OC--block