block浅析
// block用来保存一段代码
// block的标志:^
/*
block跟函数很像
1.可以保存代码
2.有返回值
3.有形参
4.调用方式一样
*/
// 定义block变量
void (^myblock)() = ^{
NSLog(@"88888");
NSLog(@"88888");
};
// 利用block变量调用block内部的代码
myblock();
/*
1)如何定义block变量
int (^MyBlock)(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 myblock;
MyBlock b1,b2;
b1 = ^(int a, int b) {
return a - b;
};
MyBlock b3 = ^(int a, int b) {
return a - b;
};
*/