block相关:
typedef int (*SumP) (int,int);
typedef int (^MyBlock) (int,int);
int sum(int a,int b){
return a+b;
}
- (int)main(){
/******************** 无参无返回值的block ************************/
void (^noBlock)() = ^(){
NSLog(@"---111---");
};
noBlock();
/******************** 有参有返回值的block ************************/
int (^sumBlock)(int ,int) = ^(int a,int b){
return a+b;
};
int c = sumBlock(10,20);
NSLog(@"c = %d",c);
//*p指向sum函数
int (*p) (int,int) = sum;
//用指针间接调用sum函数
int d = p(10,20);
NSLog(@"%d",d);
void (^lineBlock)(int) = ^(int n){
for (int i =0; i<n; i++) {
NSLog(@"-----------------");
}
};
lineBlock(5);
/******************** typedef block ************************/
MyBlock addBlock = ^(int a,int b){
return a + b;
};
addBlock(10,21);
MyBlock minusBlock = ^(int a,int b){
return a - b;
};
minusBlock(10,4);
MyBlock mulBlock = ^(int a,int b){
return a * b;
};
mulBlock(5,4);
//......类似于函数typedef .......
SumP s1 = sum;
SumP s2 = sum;
/******************** block注意 ************************/
//给局部变量加上__block关键字,就可以在block内部修改变量
}