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
时间: 2024-12-27 00:12:50

NSMutableArray使用枚举方法的相关文章

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

可变数组也可以使用枚举方法, 我们在这里提供了两种枚举方法, 一个是正序枚举, 一个是倒序枚举, 在正序枚举中, 元素的个数和顺序都是不可以修改的, 但是在倒序枚举中却可以修改, 这有些耐人寻味. 涉及的方法: objectEnumerator: 正序枚举方法. reverseObjectEnumerator: 倒序枚举方法. 下面我们来看看例子: //使用了枚举法的可变数组 #import <Foundation/Foundation.h> int main(int argc, const

NSDictionary使用枚举方法

在字典当中我们同样可以使用枚举方法, 通过枚举方法逐个打印里面的键和值. 这里涉及的方法: keyEnumerator:通过一个枚举器可以访问并返回字典里的键. objectEnumerator:通过一个枚举器可以访问并返回字典里的值. PS:这里我们需要注意一下, 由于字典里没有顺序的要求, 所以在这里我们是没有逆序枚举的方法. #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autor

golang的枚举方法

const ( ContinueOnError ErrorHandling = iota ExitOnError PanicOnError ) const iota =0 则实际对应的值的情况如下:     ErrorHandling = 0 ExitOnError   = 1 PanicOnError  = 2 go枚举方法看起来很清爽

NSDictionary使用快速枚举方法

上一章我们通过一个枚举器访问并返回字典里的键值, 现在我们通过快速枚举来查找键对应的值. 涉及到的方法: objectForKey: 这个方法的意思是返回一个值给对应的键, 下面使用了两次这个方法, 第一次没在循环里面使用, 输入了值@"1", 对应的值就是@"One". PS: 在这里, 我们找到了键, 就代表找到了值. 下面是例子: #import <Foundation/Foundation.h> int main(int argc, const

IOS_Swift_enum枚举方法

本博文为子墨原创,转载请注明出处! http://blog.csdn.net/zimo2013/article/details/50116811 enum Type: Int{ case A=1 case B=3 //普通方法 func toString()->String{ var info="" switch self{ case .A: info = "一" case .B(): info = "三" } return info }

Objective-C学习篇07—NSArray与NSMutableArray

大纲 NSArray NSMutableArray 快速枚举 NSArray NSArray是一个静态数组,也就是一个不可变数组,一旦创建以后,就不能进行添加,删除或者修改其中的元素.NSArray继承自NSObject,用于管理一系列有序对象的集合,可以通过对象在数组中的位置(索引)来访问对象.和C语言一样,数组中元素的索引是从0开始的.数组中既可以用于存放同一个类的对象,也可以用于存储不同类的对象.但不能存放nil,nil被视为数组结束的标志,系统会在方法末尾自动生成. 切记:NSArray

Objective-C 高性能的循环遍历 forin - NSEnumerator - 枚举 优化

Cocoa编程的一个通常的任务是要去循环遍历一个对象的集合  (例如,一个 NSArray, NSSet 或者是 NSDictionary). 这个看似简单的问题有广泛数量的解决方案,它们中的许多不乏有对性能方面问题的细微考虑. 对于速度的追求 首先,是一个免责声明: 相比其它问题而言,一个 Objective-C 方法原始的速度是你在编程时最后才需要考虑的问题之一 – 区别就在于这个问题够不上去同其它更加需要重点考虑的问题进行比较,比如说代码的清晰度和可读性. 但速度的次要性并不妨碍我们去理解

c# 枚举enum

1 定义枚举 enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; 默认情况下,枚举中的每个元素的基础类型的值是int,如果不指定值,则其值以1递增;Days.Sunday 的值为 0,Days.Monday 的值为 1,依此类推. public enum TimeOfDay { Moning=0; AfterNoon=1; Evening=2; } 使用枚举: public string ge

[ACM训练] 算法初级 之 基本算法 之 枚举(POJ 1753+2965)

先列出题目: 1.POJ 1753 POJ 1753  Flip Game:http://poj.org/problem?id=1753 Sample Input bwwb bbwb bwwb bwww Sample Output 4 入手竟然没有思路,感觉有很多很多种情况需要考虑,也只能使用枚举方法才能解决了吧~ 4x4的数组来进行数据存储的话操作起来肯定非常不方便,这里借用位压缩的方法来存储状态,使用移位来标识每一个位置的的上下左右的位置操作. 详细看这里. 1.当棋盘状态id为0(全白)或