"NSArray 类官方文档,详述了创建、初始化、查询、操作及比较数组的各种方法,包括子类化注意事项、采用的协议、创建数组、初始化数组、在数组中查找对象、向数组元素发送消息、比较数组、派生新数组、排序、处理字符串元素、创建描述、收集路径、键值观察和键值编码等。"
NSArray 是Objective-C中的一个核心类,它代表了一个不可变的对象集合,即一旦创建,就不能添加、删除或更改其元素的顺序。这个类是Foundation框架的一部分,用于存储和管理对象序列。以下是对NSArray类的一些关键知识点的详细说明:
1. **创建数组**
- `array`: 返回一个空的NSArray实例。
- `arrayWithArray:`: 创建一个新的NSArray,其内容与传入数组相同。
- `arrayWithContentsOfFile:`: 从指定文件中读取数据创建数组。
- `arrayWithContentsOfURL:`: 从指定URL指向的文件中读取数据创建数组。
- `arrayWithObject:`: 创建包含单个指定对象的新数组。
- `arrayWithObjects:count:`: 创建包含多个指定对象的新数组,参数count指定了对象的数量。
2. **初始化数组**
- `initWithArray:`: 初始化一个新的NSArray实例,内容与传入的数组相同。
3. **查询数组**
- `containsObject:`: 检查数组是否包含指定的对象。
- `count`: 返回数组中的对象数量。
4. **在数组中查找对象**
- `indexOfObject:`: 查找并返回指定对象在数组中的索引,如果不存在则返回NSNotFound。
- `indexOfObjectIdenticalTo:`: 查找并返回与指定对象完全相等的对象的索引。
5. **向数组元素发送消息**
- 使用点语法或`valueForKey:`方法可以对数组中的每个元素发送消息。
6. **比较数组**
- `isEqualToArray:`: 比较两个数组是否具有相同的元素和顺序。
- `isEqualToArray:options:`: 比较两个数组,允许指定比较选项,如忽略大小写。
7. **派生新数组**
- `arrayByAddingObject:`: 创建一个新数组,包含原数组的所有元素加上指定的对象。
- `arrayByAddingObjectsFromArray:`: 创建一个新数组,包含原数组和另一个数组的所有元素。
8. **排序**
- `sortedArrayUsingComparator:`: 根据比较器对数组进行排序。
- `sortedArrayUsingSelector:`: 根据提供的选择器方法对数组进行排序。
9. **处理字符串元素**
- `componentsJoinedByString:`: 将数组中的所有对象(假定为字符串)连接成一个单一的字符串,用指定的分隔符。
10. **创建描述**
- `description`, `descriptionWithLocale:`, `descriptionWithLocale:indent:`: 生成数组的文本描述,方便调试和日志记录。
11. **键值观察(KVO)和键值编码(KVC)**
- NSArray支持KVO,可以通过`addObserver:forKeyPath:options:context:`方法监听数组内对象属性的变化。
- KVC允许通过键访问数组中的对象属性,例如`valueForKey:`方法。
12. **块遍历**
- `enumerateObjectsAtIndexes:options:usingBlock:`, `enumerateObjectsUsingBlock:`, `enumerateObjectsWithOptions:usingBlock:`: 使用块遍历数组中的元素,方便进行自定义操作。
这些方法提供了对NSArray的强大支持,使得在Objective-C中处理对象序列变得简单高效。在实际编程中,根据需求选择合适的方法来实现数组的操作和管理。