• iOS 开发--NSMutableArray使用枚举方法


    可变数组也可以使用枚举方法, 我们在这里提供了两种枚举方法, 一个是正序枚举, 一个是倒序枚举, 在正序枚举中, 元素的个数和顺序都是不可以修改的, 但是在倒序枚举中却可以修改, 这有些耐人寻味.

    涉及的方法:

    objectEnumerator: 正序枚举方法. 

    reverseObjectEnumerator: 倒序枚举方法. 

    下面我们来看看例子:

    //使用了枚举法的可变数组
    #import <Foundation/Foundation.h>
    
    int main(int argc, const char * argv[]) {
      @autoreleasepool {
        NSMutableArray *array = [[NSMutableArray alloc]initWithObjects:@"One", @"Tow", @"Three", nil];
        //objectEnumetator是一个正序枚举法.
        //在使用正序枚举法的时候, 元素个数和元素顺序不允许修改.
    //		NSEnumerator *enumerator = [array objectEnumerator];
    //		NSString *str;
    //		int i = 0;
    //		while (str = [enumerator nextObject]){
    //			[array removeLastObject];
    //			NSLog(@"%d", i);
    //		}
    //
        //reverseObjectEnumerator是一个逆序的枚举法.
        //在逆序枚举法, 元素的个数和元素的顺序允许修改.
        //PS:在逆序枚举法使用任何犯法去改变元素的个数或元素顺序都是可行的.
        NSEnumerator *enumerator = [array reverseObjectEnumerator];
        NSString *str;
        while (str = [enumerator nextObject]) {
          [array removeLastObject];
          NSLog(@"%@", str);
        }
        //因为这里循环了3次, 每一次都会删除一个元素, 这样子就会导致输出来的结果是空的.
        //2014-10-12 12:24:20.242 EnumNSMutableArray[881:303] ()
        
        NSLog(@"%@", array);
        [array release];
      }
      return 0;
    }


    2014-10-13 20:17:48.793 EnumNSMutableArray[6403:303] Three
    2014-10-13 20:17:48.794 EnumNSMutableArray[6403:303] Tow
    2014-10-13 20:17:48.794 EnumNSMutableArray[6403:303] One
    2014-10-13 20:17:48.795 EnumNSMutableArray[6403:303] (
    )
    Program ended with exit code: 0
  • 相关阅读:
    Delphi 使用字符串时,一个注意地方
    Delphi 字符串 详解
    Delphi SEH研究
    Delphi 新语法之Helper
    Delphi 判断一个二进制数中有多少个1
    Delphi 数据的理解
    Delphi 对象构造浅析后续
    Delphi 关于错误E2154 Type '%s' needs finalization not allowed in variant record
    Delphi 新语法介绍之For In
    Delphi 关于错误E1038 Unit identifier '%s' does not match file name
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/5245331.html
Copyright © 2020-2023  润新知