您的位置:首页 > 其它

OC-Block-块的说明和使用

2014-12-02 13:13 190 查看
- (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不是一个对象,加入数组中作为方法的参数,返回值
//放入数组中是一个强引用。

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: