博客
关于我
iOS开发:不可变数组和可变数组的区别分析(NSArray / NSMutableArray)
阅读量:114 次
发布时间:2019-02-27

本文共 2816 字,大约阅读时间需要 9 分钟。

Object-C 中不可变数组与可变数组的对比

在 iOS 开发中,数组是非常常用的数据结构。Object-C 中提供了两种主要的数组类:NSArrayNSMutableArray。本文将从基础到应用,详细介绍这两种数组的特性及其使用方法。


一、NSArray(不可变数组)

NSArray 是一个静态数组,无法修改其内容,也无法添加或删除元素。其核心特性是 不可变性。以下是 NSArray 的常用使用方法:

1. 初始化方式
  • 创建空数组

    • NSArray *array = [NSArray alloc] init];
    • NSArray *array = [NSArray new];
    • NSArray *array = [NSArray array];
  • 创建包含单一元素的数组

    NSArray *array = [NSArray arrayWithObject:@"12345”];
  • 创建包含多个元素的数组

    NSArray *array = [NSArray arrayWithObjects:@“123”,@“456”,@“789”,@“abc”,@“def”,nil];
  • 简化写法

    NSArray *array = @[@“12345”]; // 等价于 ②
  • 从文件或 URL 中读取数组

    NSArray *array = [NSArray arrayWithContentsOfFile:@“路径”];  NSArray *array = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@“URL”]];
  • 2. 获取数组元素个数
    NSUInteger count = array.count; // 或者:NSInteger count = [array count];
    3. 访问数组元素
    // 访问数组中的元素NSString *string = [array objectAtIndex:0];  // 遍历数组for (int i = 0; i < array.count; i++) {  NSLog(@"数组第 %d 个元素:%@", i, [array objectAtIndex:i]);}
    4. 操作数组元素
    // 添加元素(生成新数组)NSArray *newArray = [array arrayByAddingObject:@“ghi”];  // 添加多个元素NSArray *newArray = [array arrayByAddingObjectsFromArray:array];  // 将数组转换为字符串NSString *string = [newArray componentsJoinedByString:@”,”];
    5. 根据字符串操作数组
    NSString *string = @“123+456+789”;NSArray *array = [string componentsSeparatedByString:@“+”];  // 反之,将数组拼接成字符串NSArray *array = @[@"1”, @"2”, @"4”, @"3”];NSString *string = [array componentsJoinedByString:@"/”];

    二、NSMutableArray(可变数组)

    NSMutableArrayNSArray 的子类,具有 可变性,即可以对数组中的元素进行添加、删除、替换等操作。以下是 NSMutableArray 的常用使用方法:

    1. 初始化方式
  • 创建空数组

    • NSMutableArray *mArray = [NSMutableArray new];
    • NSMutableArray *mArray = [NSMutableArray array];
  • 创建包含多个元素的数组

    NSMutableArray *mArray = [NSMutableArray arrayWithObjects:@“1”,@“2”,@“3”,@“4”,@“5”,nil];
  • 从文件或 URL 中读取数组

    NSMutableArray *mArray = [NSMutableArray arrayWithContentsOfFile:@“路径”];  NSMutableArray *mArray = [NSMutableArray arrayWithContentsOfURL:[NSURL URLWithString:@“URL”]];
  • 指定容量

    NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:10];
  • 2. 增加数组元素
  • 在末尾添加元素

    [mArray addObject:@“7”];
  • 插入指定位置的元素

    [mArray insertObject:@“def” atIndex:2];
  • 替换指定位置的元素

    [mArray replaceObjectAtIndex:3 withObject:@“adc”];
  • 删除元素

    [mArray removeObject:@“4”];  [mArray removeObjectAtIndex:5];  [mArray removeLastObject];  [mArray removeAllObjects];
  • 3. 快速遍历数组
    for (NSString *object in mArray) {  NSLog(@“%@”,object);}
    4. 常用函数
  • 指定容量创建数组

    +(id)arrayWithCapacity:(NSInteger)size;
  • 初始化数组

    -(id)initWithCapacity:(NSInteger)size;
  • 添加元素

    -(void)addObject:(id)object;
  • 插入元素

    -(void)insertObject:(id)object atIndex:(NSInteger)aIndex;
  • 替换元素

    -(void)replaceObject:(id)object atIndex:(NSInteger)aIndex;
  • 删除元素

    -(void)removeObject:(id)object;
  • 删除所有元素

    -(void)removeAllObjects;
  • 排序方法

    -(void)sortUsingSelector:(SEL)selector;

  • 总结

    NSArrayNSMutableArray 在 iOS 开发中的应用场景有明显区别。NSArray 因其不可变性,适用于数据不可变的场景;而 NSMutableArray 则适用于需要频繁修改数据的应用。选择使用哪种数组类型取决于具体需求。

    转载地址:http://yslf.baihongyu.com/

    你可能感兴趣的文章
    phpMailer发送邮件
    查看>>
    PHPMailer发送邮件
    查看>>
    phpmailer发送邮件,可以带附件
    查看>>
    phpmailer的用法
    查看>>
    phpMQTT
    查看>>
    phpmyadmin 安装
    查看>>
    phpmyadmin导出数据库出现Fatal error: Cannot 'break' 2 levels in D:\phpstudy\WWW\phpMyAdmin
    查看>>
    phpmyadmin数据库建表及插入
    查看>>
    phpnow配置
    查看>>
    phprpc简单使用
    查看>>
    phpspider中当爬虫获取数据时如何去掉广告
    查看>>
    phpstorm 2016.3.3 激活
    查看>>
    phpstorm中Xdebug的使用
    查看>>
    phpstorm中使用svn版本控制器
    查看>>
    PHPStorm使用git
    查看>>
    PHPstorm最常用的快捷键,提高开发效率
    查看>>
    Redis五种数据结构
    查看>>
    phpstorm配置php脚本执行
    查看>>
    PhpStorm配置远程xdebug
    查看>>
    phpstudy+iis搭建php项目
    查看>>