天天看点

OC之Foundation数组

一、简介

OC数组只能存放OC对象,不能存放非OC对象类型(例如基本数据类型、结构体、枚举等)。

C语言数组有一个缺点即数组中只能存放同种数据类型的元素。

NSArray:不可变数组

NSMutableArray:可变数组

二、NSArray

            NSArray:不可变数组

    1.创建方式

OC之Foundation数组

    2. NSArray的访问

OC之Foundation数组

    3. ★★★NSArray的遍历★★★

首先,我们快速创建一个OC数组

NSArray *array = @[@"first", @"second", @"third", @"forth"];

       1>常规方法遍历

先列出我们最容易想到的(对比C语言数组遍历的方法)

优化前

OC之Foundation数组

①第16行快速创建OC数组:NSArray *array = @[@"first", @"second", @"third", @forth];

② 第18行 array.count 是调用了get方法;

③ 优点:数组下标和数组元素都是可见的;

④ 缺点:每遍历一个元素,都会调用一次 array.count,重复调用,影响性能。

优化后

OC之Foundation数组
通过使用  objectAtIndex: 方法获取对应下标的数组元素
OC之Foundation数组

       2>快速遍历  for(id obj in array)

OC之Foundation数组
为了可以看到数组下标,做出以下优化
OC之Foundation数组
OC之Foundation数组

       3>调用block进行遍历

OC之Foundation数组

接下来介绍 BOOL *stop

stop是一个BOOL类型的指针变量:

当它的值为YES(或者任何其他非零值)时,表示遍历停止。

当它的值为NO(或者零值)时,表示遍历不会停止。

      4>通过迭代器遍历数组

OC之Foundation数组

            反序迭代器

OC之Foundation数组

三、NSMutableArray

    1.简介

作用:可以往数组内部添加或删除内容。

注意:NSMutableArray继承自NSArray,几乎拥有NSArray的一切方法。

    2.基本用法

OC之Foundation数组