- (void)blockClass{
Block_B b1;
b1 = ^(int a,int b){
return a+b;
};
b1(11,21);
Block_B b2;
//返回值为void,参数为void的代码块:
void (^b)() = ^(){
printf("无参block");
};
//block的调用:
b();
//3.如果block中得到的返回值的“类型”(不是返回值)系统可以确定,返回值可以省略。
//声明一个返回值为int,参数为int的block:bb
int (^bb)(int a,int b) = ^(int a,int b){
return a+b;
};
//把函数名换成尖括号,
bb = ^(int a,int b){
printf("a+b = %d",a+b);
return 0;
};
//block的调用:
int sum = bb(1,2);
//2.如果block的参数为void可以这么赋值:
b = ^{
NSLog(@"bloack");
};
void (^print)(int n);
print = ^(int n){
for (int i = 0; i<n;i++) {
printf("n\n");
}
};
print(4);
//1.block在声明的同时可以赋值。
int (^bbb)(int a,int b) = ^(int a,int b){
return a*b;
};
NSLog(@"%d",bbb(11,20));
}
- (void)block{
int a = 9;
int b = 100;
int (^bb)(int a,int b) = ^(int a,int b){
a = b;
return a+b;
};
//在block当中可以访问外面的变量,但是不能更改外面的变量值,是只读的
//如果想修改,需要在变量前面加:__block;
//int __block a;
//int __block b;
bb(a,b);
}
- (void)block3{
//block不是一个对象,加入数组中作为方法的参数,返回值
//放入数组中是一个强引用。
}