iOS中的block
定义一个block:
int (^blockname)(int, int);
blockname = ^(int a, int b){
return a>b ? a: b;
};
这个block等同于:
int (^blockname)(int, int) = ^(int a, int b){
return a>b?a:b;
};
使用:
NSInterge a = blockname(3, 4);
NSLog(@"a=%ld", a);
.block作为方法的参数
NSArray *nameArray = [NSArray arrayWithObjects:@"zhao", @"qian", @"sun", @"li", nil];
NSArray *arr = [nameArray sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@", arr);
NSMutableArray *numberArray = [NSMutableArray arrayWithObjects:@"2", @"1", @"10", @"015", nil];
NSArray *sortArray1 = [numberArray sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"%@", sortArray1);
NSArray *arr2 = [numberArray sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
//相邻两个元素(obj1, obj2)比较的规则
if ([obj1 intValue] > [obj2 intValue]) {
//相邻两个元素(obj1, obj2)的比较规则
//系统排序以满足NSOorderDescending的条件进行交换
//注: 快速判断拍好的数组, 以满足NSOrderAscending的条件为准
return NSOrderedAscending;
}else if ([obj1 intValue] == [obj2 intValue]){
return NSOrderedSame;
}else{
return NSOrderedDescending;
}
}];
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。