您的位置:首页 > 编程语言

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

2015-04-04 00:08 585 查看
#import "HMViewController.h"

@interface HMViewController ()

@end

@implementation HMViewController

- (void)viewDidLoad
{
[super viewDidLoad];

// 块代码
NSArray *array = @[@(1), @(2), @(3), @(4), @(5)];

// 排序
array = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *num1, NSNumber *num2) {

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

NSLog(@"%@", array);
}

- (void)sortWith:(NSArray *)array
{
// 排序
array = [array sortedArrayUsingComparator:^NSComparisonResult(NSNumber *num1, NSNumber *num2) {

/**
1 4 5 2
4 1 5 2
4 1 5 2
5 4 1 2
5 4 1 2
5 4 2 1
*/
NSLog(@"%@ %@", num1, num2);

// 升序
//        return [num1 compare:num2];
// 降序
return [num2 compare:num1];
}];

NSLog(@"%@", array);
}

- (void)arrayWith:(NSArray *)array
{
int i = 0;
for (NSNumber *num in array) {
NSLog(@"%@", num);

if (i == 1) {
break;
}
i++;
}

// 参数:对象,索引,是否中断
// 数组的块方法遍历的效率比for in高
[array enumerateObjectsUsingBlock:^(NSNumber *obj, NSUInteger idx, BOOL *stop) {
NSLog(@"%@", obj);

// idx == 1 退出循环
if (idx == 1) {
*stop = YES;
}
}];
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: