MST

星途 面试题库

面试题:Objective-C中NSArray和NSMutableArray的区别及使用场景

请阐述Objective-C中NSArray和NSMutableArray在功能特性上有哪些区别,并举例说明在实际开发中,什么场景下会选择使用NSArray,什么场景下会选择使用NSMutableArray。
16.8万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

功能特性区别

  1. 可变性
    • NSArray是不可变数组,一旦创建,其内容和长度就不能改变。
    • NSMutableArray是可变数组,可以在运行时添加、删除或修改数组中的元素。
  2. 方法差异
    • NSArray主要提供用于访问元素的方法,如objectAtIndex:获取指定索引位置的元素等。
    • NSMutableArray除了包含NSArray的访问方法外,还提供了用于修改数组的方法,如addObject:添加元素,removeObjectAtIndex:删除指定索引位置的元素等。

实际开发场景选择

  1. 选择NSArray的场景
    • 当数据不需要改变时,比如存储应用中的固定配置信息。例如,一个应用中有一个颜色主题数组,里面存放着固定的几种颜色,这些颜色在应用运行过程中不会改变。
    NSArray *colorThemes = @[@"Red", @"Green", @"Blue"];
    
    • 作为方法的返回值,向调用者提供只读数据。比如一个方法用于获取应用支持的语言列表,这个列表不会在外部被修改。
    - (NSArray *)supportedLanguages {
        return @[@"English", @"Chinese", @"Spanish"];
    }
    
  2. 选择NSMutableArray的场景
    • 当需要动态管理数据集合时。例如,在一个待办事项应用中,用户可以随时添加或删除待办事项。
    NSMutableArray *todoList = [NSMutableArray array];
    [todoList addObject:@"Buy groceries"];
    [todoList removeObjectAtIndex:0];
    
    • 在数据处理过程中,需要对数组元素进行频繁修改。比如在一个图片编辑应用中,需要对图片的滤镜列表进行动态调整。
    NSMutableArray *filters = [NSMutableArray arrayWithObjects:@"Blur", @"Sharpen", nil];
    [filters replaceObjectAtIndex:0 withObject:@"Sepia"];