iOS 多用块枚举,少用for循环

释放双眼,带上耳机,听听看~!

for循环遍历

    NSArray *arr1 = @[@1,@2,@3,@4,@5];
    for (int i = 0; i < arr1.count; ++i) {
        NSLog(@"arr1[i]=%@",arr1[i]);
    }

for循环反向遍历


    for (NSInteger i = arr1.count-1; i >= 0; --i) {
        NSLog(@"arr1[i]=%@",arr1[i]);
    }

NSEnumerator遍历法

    NSArray *arr1 = @[@1,@2,@3,@4,@5];
    NSEnumerator *enumerator = [arr1 objectEnumerator];
    id object;
    while ((object = [enumerator nextObject]) != nil) {
        NSLog(@"object=%@",object);
    }

NSEnumerator遍历法反向遍历

    NSEnumerator *reverseenu = [arr1 reverseObjectEnumerator];
    id object1;
    while ((object1 = [reverseenu nextObject]) != nil) {
        NSLog(@"object1=%@",object1);
    }

快速遍历法

    NSArray *arr1 = @[@1,@2,@3,@4,@5];
    for (NSObject *obj in arr1) {
        NSLog(@"obj=%@",obj);
    }

快速遍历法反向遍历

    for (NSObject *obj1 in [arr1 reverseObjectEnumerator]) {
        NSLog(@"obj1=%@",obj1);
    }

块枚举法

    NSArray *arr1 = @[@1,@2,@3,@4,@5];
    [arr1 enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSLog(@"idx=%zd,obj=%@",idx,obj);
    }];

块枚举法反向遍历

    [arr1 enumerateObjectsWithOptions:NSEnumerationReverse usingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSLog(@"idx=%zd,obj=%@",idx,obj);
    }];

遍历collection有四种方式。最基本的办法是for循环,其次是NSEnumerator遍历法及快速遍历法,最新、最先进的方式则是“块枚举法”。

“块枚举法”本身就能通过GCD来并发执行遍历操作,无须另行编写代码。而采用其他遍历方式则无法轻易实现这一点。

若提前知道待遍历的collection含有何种对象,则应修改块签名,指出对象的具体类型。

人已赞赏
iOS文章

iOS 截取指定(UIView,web)区域并获取UIImage

2019-9-19 5:33:28

iOS文章

iOS 只显示图片中间部分

2019-9-19 14:18:08

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索