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;
        }
    }];

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。