数组的快代码 循环遍历 数组排序

network | | 访问(51)
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    // 块代码
    NSArray *array = @[@(1), @(2), @(3), @(4), @(5)];

    // 遍历方法(1) 
       
    int i = 0;
    for (NSNumber *num in array) {
        NSLog(@"%@", num);
        
        if (i == 1) {
            break;
        }
        i++;
    }
    
    // 遍历方法(2)
    
    // 参数:对象,索引,是否中断
    // 数组的块方法遍历的效率比for in高
    [array enumerateObjectsUsingBlock:^(NSNumber *obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"%@", obj);
        
        // idx == 1 退出循环
        if (idx == 1) {
            *stop = YES;
        }
    }]; 
    
    // 排序
    array = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *num1, NSNumber *num2)       {
        // return [num1 compare:num2];// 升序
        return [num2 compare:num1];// 降序
    }];
    
    // 排序,打乱顺序
    array = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *num1, NSNumber *num2)       {

        // 乱序=>一会升序,一会降序
        // 随机
        // arc4random_uniform(10) => 0~9之间的随机数
        int seed = arc4random_uniform(2);// 随机数0,1
        if (seed) {
          return [num1 compare:num2];
        } else {
          return [num2 compare:num1];
        }
    }];
    
}