使用块代码实现数组排序和乱序

 1 #import "HMViewController.h"
 2 
 3 @interface HMViewController ()
 4 
 5 @end
 6 
 7 @implementation HMViewController
 8 
 9 - (void)viewDidLoad
10 {
11     [super viewDidLoad];
12     
13     // 块代码
14     NSArray *array = @[@(1), @(2), @(3), @(4), @(5)];
15     
16     // 排序
17     array = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *num1, NSNumber *num2) {
18 
19         // 乱序=>一会升序,一会降序
20         // 随机
21 //        arc4random_uniform(10) => 0~9之间的随机数
22         int seed = arc4random_uniform(2);
23         if (seed) {
24             return [num1 compare:num2];
25         } else {
26             return [num2 compare:num1];
27         }
28     }];
29     
30     NSLog(@"%@", array);
31 }
32 
33 - (void)sortWith:(NSArray *)array
34 {
35     // 排序
36     array = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *num1, NSNumber *num2) {
37         
38         /**
39          1 4 5 2
40          4 1 5 2
41          4 1 5 2
42          5 4 1 2
43          5 4 1 2
44          5 4 2 1
45          */
46         NSLog(@"%@ %@", num1, num2);
47         
48         // 升序
49         //        return [num1 compare:num2];
50         // 降序
51         return [num2 compare:num1];
52     }];
53     
54     NSLog(@"%@", array);
55 }
56 
57 - (void)arrayWith:(NSArray *)array
58 {
59     int i = 0;
60     for (NSNumber *num in array) {
61         NSLog(@"%@", num);
62         
63         if (i == 1) {
64             break;
65         }
66         i++;
67     }
68     
69     // 参数:对象,索引,是否中断
70     // 数组的块方法遍历的效率比for in高
71     [array enumerateObjectsUsingBlock:^(NSNumber *obj, NSUInteger idx, BOOL *stop) {
72         NSLog(@"%@", obj);
73         
74         // idx == 1 退出循环
75         if (idx == 1) {
76             *stop = YES;
77         }
78     }];
79 }
80 
81 @end

 

posted @ 2015-04-04 00:08  liqiantu  阅读(163)  评论(0编辑  收藏  举报