OC菜鸟成长记-OC中的数组创建和操作

本文介绍了OC中的数组类型,包括不可变数组NSArray和可变数组NSMutableArray。对两种类型的创建和操作进行了详细阐述,帮助OC初学者理解其使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在OC中,数组分为两种:不可变数组(NSArray) 和 可变数组(NSMutableArray)。根据自己的认识,笔者在下面对OC中的数组进行一下总结。

首先是不可变数组(NSArray):

//        NSArray
        //初始化
        NSArray *array =[[NSArray alloc]init];
        NSArray *array1 = [NSArray arrayWithObjects:@"a",@"b",@"c", nil];
        //新语法
        NSArray *array2 =@[@"a",@"b",@"c"];
        
        NSArray *array3 =[NSArray arrayWithArray:array1];
        
        //操作
        //历遍某一个元素
        NSString *arrStr = [array1 objectAtIndex:0];
        //历遍数组
        for (int i=0; i<array1.count; i++) {
            NSLog(@"%d:%@",i,[array1 objectAtIndex:i]);
        }
        //利用枚举器进行历遍
        //先初始化一个枚举器
        NSEnumerator *enumerator = [array1 objectEnumerator];
        id obj;
        while (obj =[enumerator nextObject]) {
            NSLog(@"%@",obj);
        }
        //快速历遍
        //id obj;
        for (obj in array1) {
            NSLog(@"%@",obj);
        }
        
        //添加元素
        NSArray *array4 = [array3 arrayByAddingObjectsFromArray:array2];
        NSArray *array5 = [array3 arrayByAddingObject:@"d"];
        NSLog(@"array4 = %@,array5=%@",array4,array5);

运行结果如下:

 oc_731_practise[17787:164553] 0:a
 oc_731_practise[17787:164553] 1:b
 oc_731_practise[17787:164553] 2:c
 oc_731_practise[17787:164553] a
 oc_731_practise[17787:164553] b
 oc_731_practise[17787:164553] c
 oc_731_practise[17787:164553] a
 oc_731_practise[17787:164553] b
 oc_731_practise[17787:164553] c
 oc_731_practise[17787:164553] array4 = (
    a,
    b,
    c,
    a,
    b,
    c
),array5=(
    a,
    b,
    c,
    d
)


然后是可变数组(NSMutableArray):

//        NSMutableArray
        
        //初始化
        NSMutableArray *marray1 =[NSMutableArray array];
        marray1 =[NSMutableArray arrayWithArray:array1];
        
        //插入元素
        [marray1 insertObject:@"diao" atIndex:2];
        
        //替换
        [marray1 replaceObjectAtIndex:0 withObject:@"z"];
        
        //交换
        [marray1 exchangeObjectAtIndex:0 withObjectAtIndex:2];
        
        //删除
        [marray1 removeLastObject];//删除最后一个
        [marray1 removeObject:@"z"];//删除指定元素
        [marray1 removeAllObjects];//删除全部元素
        
        //利用枚举器历遍
        //初始化
        NSEnumerator *enumerator1 =[marray1 objectEnumerator];
        //使用while循环历遍
        id obj1;
        while (obj1 = [enumerator1 nextObject]) {
            NSLog(@"%@",obj1);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值