面试题答案
一键面试功能特性区别
- 可变性:
NSArray
是不可变数组,一旦创建,其内容和长度就不能改变。NSMutableArray
是可变数组,可以在运行时添加、删除或修改数组中的元素。
- 方法差异:
NSArray
主要提供用于访问元素的方法,如objectAtIndex:
获取指定索引位置的元素等。NSMutableArray
除了包含NSArray
的访问方法外,还提供了用于修改数组的方法,如addObject:
添加元素,removeObjectAtIndex:
删除指定索引位置的元素等。
实际开发场景选择
- 选择NSArray的场景:
- 当数据不需要改变时,比如存储应用中的固定配置信息。例如,一个应用中有一个颜色主题数组,里面存放着固定的几种颜色,这些颜色在应用运行过程中不会改变。
NSArray *colorThemes = @[@"Red", @"Green", @"Blue"];
- 作为方法的返回值,向调用者提供只读数据。比如一个方法用于获取应用支持的语言列表,这个列表不会在外部被修改。
- (NSArray *)supportedLanguages { return @[@"English", @"Chinese", @"Spanish"]; }
- 选择NSMutableArray的场景:
- 当需要动态管理数据集合时。例如,在一个待办事项应用中,用户可以随时添加或删除待办事项。
NSMutableArray *todoList = [NSMutableArray array]; [todoList addObject:@"Buy groceries"]; [todoList removeObjectAtIndex:0];
- 在数据处理过程中,需要对数组元素进行频繁修改。比如在一个图片编辑应用中,需要对图片的滤镜列表进行动态调整。
NSMutableArray *filters = [NSMutableArray arrayWithObjects:@"Blur", @"Sharpen", nil]; [filters replaceObjectAtIndex:0 withObject:@"Sepia"];