Objective-C的四种遍历collection的方式

本文详细介绍了Objective-C中遍历collection的四种方法:C语言的for循环,使用NSEnumerator,Objective-C 2.0的快速遍历以及基于块的遍历。对于数组、字典和set,每种方法都有相应的遍历示例,包括正向和反向遍历。文章强调了基于块的遍历方式在提供下标、键值对以及并发迭代等方面的优点,尽管代码量稍多。
摘要由CSDN通过智能技术生成

前言

注:本文摘自《编写高质量iOS与OS X代码的52个有效方法》第7章第48条并进行了相关整理和扩充

    我们在编程中,经常性的需要列举collection中的元素,在OC中,有多种形式来实现该功能:

  1. C语言中的for循环
  2. Objective-C 1.0 的 NSEnumerator
  3. Objective-C 2.0 的快速遍历
  4. 基于块的遍历方式

    开发中,我们常常使用第一种和第三种遍历方式,而往往忽略其他几种遍历方式,但实际上,某些情况下使用其他的方法会大幅度简化编码的过程。

注:本文中所讲的collection,包含NSArrayNSDictionaryNSSet这几个频繁使用的类型。

C语言中的for循环

    遍历数组我们最常采用的方法就是采用for循环:

遍历数组

NSArray *anArray = /*...*/;
for (int i = 0 ; i < anArray.count; i ++){
    id object = anArray[i];
    //Do something with 'object'
}

遍历字典

NSDictionary *aDictionary = /*...*/;
NSArray *keys = [aDictionary allKeys];
for(int i = 0; i < keys.count; i ++){
    id key = keys[i];
    id value = aDictionary[key];
    //Do something with 'key' and 'value'
}

遍历set

NSSet *aSet = /*...*/;
NSArray *objects = [aSet allObjects];
for(int i = 0; i < objects.count; i ++){
    id object = objects[i];
    //Do something with 'object'
}

    可以看到,遍历数组的过程还比较简便。但是字典和set相对来说比较复杂。由于字典与set都是无序的,无法根据特定的整数下标来直接访问其中的值,必须先获取字典里的所有的键或是set里的全部对象,为了保存字典里所有的键或是set中的全部对象,我们必须要创建额外的一个数组对象,用于保留collection中的这些元素对象。相对的,释放操作时,也要将这些额外的对象释放掉,执行了本来不需要执行的方法。相比较而言,其他的方法则无需创建这种中介数组

反向遍历

    当然for循环也可以实现反向遍历,只需要将计数器i的值从元素个数递减。就反向遍历而言,相比较其他的方法简便许多。

NSArray *anArray = /*...*/;
for (int i = anArray.count ; i >= 0; i --){
    id object = anArray[i];
    //Do something with 'object'
}

使用NSEnumerator进行遍历

    NSEnumerator是一个抽象的基类,定义中只提供了一个公共方法和一个公共属性供子类来实现。

@property (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值