block就是用来保存一段代码,block的标志是^。
一、block的定义与调用
#import <Foundation/Foundation.h>
int main()
{
// 定义block变量
void (^myBlock)() = ^{
NSLog(@"========");
}
// 利用block变量调用block内部的代码
myBlock();
return 0;
}
二、带参数的block
#import <Foundation/Foundation.h>
int main()
{
int (^sumBlock)(int, int) = ^(int a, int b){
return a + b;
}
int c = sumBlock(10, 11);
NSLog(@"%d", c);
return 0;
}
三、使用typedef定义block类型
#import <Foundation/Foundation.h>
// 使用typedef定义一个block类型,供具有相同参数和返回值的block使用
typedef int (^MyBlock)(int, int);
int main()
{
// 使用MyBlock类型声明一个block变量
MyBlock sumBlock;
sumBlock = ^(int a, int b){
return a + b;
}
// 使用MyBlock类型定义一个block变量
MyBlock minusBlock = ^(int a, int b){
return a - b;
}
NSLog(@"%d - %d", sumBlock(10, 9), minusBlock(10, 8));
return 0;
}
四、block使用注意事项
1. block内部可以访问外部的变量。
2. 默认情况下,block内部不能修改外面的局部变量。
3. 给局部变量加上关键字_block,这个局部变量就可以在block内部被修改。