block可以用来封装和保存代码,有点像函数,block可以在任何时候执行; block有返回值,有形参,和函数的调用方式一样;
代码如下:
int (^myBlock)(int) = ^(int num){
return num *10;
};
int a = 0;
a = myBlock(100);
NSLog(@"a = %d", a);
//两个数比较大小
int (^maxBlock)(int, int) = ^(int x, int y){
return x > y ? x : y;
};
int max = 0;
max = maxBlock(5, 10);
NSLog(@"max = %d", max);
//两个数求和
int (^sumBlock)(int, int) = ^(int x, int y){
return x + y;
};
int sum = 0;
sum = sumBlock(4, 5);
NSLog(@"sum = %d", sum);
int (^max3Block)(int, int, int) = ^(int x1, int x2, int x3){
return maxBlock(maxBlock(x1, x2), x3);
};
NSLog(@"%d", max3Block(4, 5, 6));
int (^string2Number)(NSString *) = ^(NSString *s){
return [s intValue];
};
int b = 0;
b = string2Number(@"213");
NSLog(@"b = %d", b);
typedef int (^SBBlock)(NSString *);
SBBlock sBlock = string2Number;//sblock是指针
NSLog(@"%d", sBlock(@"333"));
__block int num = 1;
void (^addNum)(void) = ^(void){
int c = num * 10;
num = 10;
NSLog(@"c = %d", c);
count++;
};
addNum();
NSLog(@"num = %d", num);
NSArray *stringArray = [NSArray arrayWithObjects:@"abc10", @"abc21", @"abc12",@"abc50", @"abc13", nil];
NSComparisonResult (^compareBlock)(NSString *, NSString *) = ^(NSString *s1, NSString *s2){
return [s1 compare:s2];
};
NSArray *sortArray = [stringArray sortedArrayUsingComparator:compareBlock];
NSLog(@"%@",sortArray);