美文网首页
迭代器-半成品

迭代器-半成品

作者: iOS_愛OS | 来源:发表于2018-06-13 17:54 被阅读19次

    迭代器


    iOS 中常用的迭代器

    //NSEnumerator 枚举
    - (void)enumeratorDemo{
        NSArray *nameArr = @[@"孔子",@"孟子",@"墨子",@"老子",@"鬼谷子"];
        NSEnumerator *enumerator = [nameArr objectEnumerator];
        NSString *item;
        while (item = [enumerator nextObject]) {
            // 对 item 做处理
        }
    }
    // 块枚举
    - (void)enumeratorWithBloc{
        void (^demoBlock)(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) = ^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop){
            NSLog(@"%@",obj);
            NSLog(@"idx = %lu",(unsigned long)idx);
            if ([(NSString *)obj  isEqual: @"墨子"]){
                *stop = YES;
            }
        };
        NSArray *nameArr = @[@"孔子",@"孟子",@"墨子",@"老子",@"鬼谷子"];
        [nameArr enumerateObjectsUsingBlock:demoBlock];
    }
    
    //快速枚举
    - (void)quickEnumerator{
        NSArray *nameArr = @[@"孔子",@"孟子",@"墨子",@"老子",@"鬼谷子"];
        for (NSString *item in nameArr) {
            //做处理
        }
    }
    
    // 内部枚举
    - (void)insideEnumerator{
        NSArray *nameArr = @[@"孔子",@"孟子",@"墨子",@"老子",@"鬼谷子"];
        // nameArr 中的每个元素都执行 method 方法
        //[nameArr makeObjectsPerformSelector:method]
        // nameArr 中的每个元素都执行 method 方法,方法参数为 obj
    //    [nameArr makeObjectsPerformSelector:method withObject:obj]
    }
    

    MarkEnumerator.h
    MarkEnumerator+Internal.h
    MarkEnumerator.m

    .m 中实现 MarkEnumerator.h 和 MarkEnumerator 中声明的所有方法。

    [[array reverseObjectEnumerator] allObjects];
    其中 [array reverseObjectEnumerator] 得到一个逆序的枚举型
    [[array reverseObjectEnumerator] allObjects]; 是得到数组 array 的逆序数组

    相关文章

      网友评论

          本文标题:迭代器-半成品

          本文链接:https://www.haomeiwen.com/subject/tkcseftx.html