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

Posted 专注it

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于iOS 开发--NSMutableArray使用枚举方法的主要内容,如果未能解决你的问题,请参考以下文章

用Socket开发一枚小型实时通信App

将 NSMutableArray 分配给另一个时的奇怪行为(iOS 6)

如何在ios的同一个Nsmutablearray中存储旧值和新值

使用 NSObjects 将文件保存到文档 NSMutableArray 的问题

在 iOS 中使用 MPMediaItem 时是不是需要使用 mutableCopy 到 NSMutableArray?

在 iOS 中保存 NSMutableArray