Objective-C语言——NSAarray不可变数组

本文详细介绍了 Objective-C 中 NSArray 的创建、操作及注意事项。包括不同方式的数组初始化、元素访问、数组长度获取、元素查找等功能,并展示了如何使用新语法简化数组操作。

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



#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {

        
        //不可变数组 NSArray
        //初始化
        //创建一个空数组
        NSArray *array1 = [[NSArray alloc] init];
        NSArray *array2 = [NSArray array];
        
        //创建一个里面只有一个元素的不可变数组
        NSArray *array3 = [NSArray arrayWithObject:@"Rick"];
        // 等价于新语法: NSArray *array5 = @[@"Rick"];
        
        //创建一个里面有多个元素的不可变数组
        NSArray *array4 = [NSArray arrayWithObjects:@"zengxinsheng",@"xuyu",@"shenzhengnan",@"chenyaoxing", nil];
        //nil只能出现在数组的最后,不能在数组中间存放nil,因为nil是一个NSArray的结束标志
        //等价于新语法: NSArray *array6 = @[@"zengxinsheng",@"xuyu",@"shenzhengnan",@"chenyaoxing"];
        
        //新语法
        NSArray *array5 = @[@"Rick"];
        
        NSArray *array6 = @[@"zengxinsheng",@"xuyu",@"shenzhengnan",@"chenyaoxing"];
        
        //根据另一个数组产生新的数组
        NSArray *array7 = [NSArray arrayWithArray:array6];
        NSLog(@"%@",array7);
        
        //一般使用类方法创建 array4
        //NSArray *array8 = [[NSArray alloc]initWithObjects:@"zengxinsheng",@"xuyu",@"shenzhengnan",@"chenyaoxing", nil];
        
        
        //从本地文件读取数组
        NSArray *array8 = [NSArray arrayWithContentsOfFile:@""];
        
        //从网络文件读取数组
//        NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
//        NSArray *array9 = [NSArray arrayWithContentsOfURL:url];
        //等价于上一个
        NSArray *array9 = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@"https://www.alipay.com"]];
        NSLog(@"array9=%@",array9);
       
        
        //求数组中元素的个数
        NSUInteger count = array6.count;
        NSLog(@"count = %lu",count);
        
        
        
        
        
        //数组的操作
        //访问数组中的元素
        //访问 array6 中的第一元素
        
        NSString *str = [array6 objectAtIndex:0];
        NSLog(@"str = %@",str);
        
        for (int i=0; i<count ; i++) {
            NSLog(@"遍历array6 = %@",[array6 objectAtIndex:i]);
            
        }
        
        //新语法访问数组中的元素
        NSString *str2 = array6[0];
        NSLog(@"str2= %@",str2);
        
        
        //NSNumber
        NSNumber *number1 = [NSNumber numberWithInt:5];
        //等价于
        NSNumber *number2 = @5;
        
        NSNumber *number3 = [NSNumber numberWithBool:YES];
        //等价于
        NSNumber *number4 = @YES;
        
        //通过数组中的元素找下标
        NSUInteger index = [array6 indexOfObject:@"zengxinsheng"];
        NSLog(@"index = %lu",index);
        
        //判断数组中是否存在某个元素
        
        BOOL flag=[array6 containsObject:@"zengxinsheng"];
        NSLog(@"flag = %d",flag);
        
        
        //向不可变数组中增加一个元素,产生新的不可变数组
        NSArray *newArray1 = [array6 arrayByAddingObject:@"wuzhipeng"];
        NSArray *newArray2=[newArray1 objectAtIndex:4];
        NSLog(@"newArray2=%@",newArray2);
        
        for (int i=0; i<count+1; i++) {
            NSLog(@"newArray%d=%@",i,[newArray1 objectAtIndex:i]);
        }
     
//        NSString *string = @"123-456-789";
//        NSArray *array11 = [string componentsSeparatedByString:@"-"];
//        NSLog(@"%@",array11);
        
        
       NSString *string= [newArray1 componentsJoinedByString:@"-"];
        NSLog(@"string = %@",string);
        
        NSArray *array12 = @[@"123",@"456",@"789",@"000"];
        NSString *string1= [array12 componentsJoinedByString:@"√"];
        NSLog(@"string1 = %@",string1);
        
       NSArray *newarray2 =[string1 componentsSeparatedByString:@"√"];
        NSLog(@"newarray2%@",newarray2);
        NSString *newarray3 = [array12 componentsJoinedByString:@""];
        NSLog(@"newarray3=%@",newarray3);
        
        /*
         使用NSArray 类注意事项
         1.数组越界:当访问NSArray时,索引超出元素个数之后会报出一个异常结果,
         所以最好检查一个索引结果是否越界,然后在进行调用
         2.数组会对加入其中的对象自动把引用计数加一
         3.不能在数组中中间存放nil,nil只能出现在数组的最后,因为nil是一个NSArray 结束的标志
         
         */
       
        
        
        
        
    }
    return 0;
}

运行结果


2015-12-15 13:17:44.824 OC_05_01[2641:60558] (

    zengxinsheng,

    xuyu,

    shenzhengnan,

    chenyaoxing

)

2015-12-15 13:17:45.693 OC_05_01[2641:60558] array9=(null)

2015-12-15 13:17:45.694 OC_05_01[2641:60558] count = 4

2015-12-15 13:17:45.694 OC_05_01[2641:60558] str = zengxinsheng

2015-12-15 13:17:45.694 OC_05_01[2641:60558] 遍历array6 = zengxinsheng

2015-12-15 13:17:45.694 OC_05_01[2641:60558] 遍历array6 = xuyu

2015-12-15 13:17:45.694 OC_05_01[2641:60558] 遍历array6 = shenzhengnan

2015-12-15 13:17:45.694 OC_05_01[2641:60558] 遍历array6 = chenyaoxing

2015-12-15 13:17:45.694 OC_05_01[2641:60558] str2= zengxinsheng

2015-12-15 13:17:45.696 OC_05_01[2641:60558] index = 0

2015-12-15 13:17:45.696 OC_05_01[2641:60558] flag = 1

2015-12-15 13:17:45.696 OC_05_01[2641:60558] newArray2=wuzhipeng

2015-12-15 13:17:45.696 OC_05_01[2641:60558] newArray0=zengxinsheng

2015-12-15 13:17:45.697 OC_05_01[2641:60558] newArray1=xuyu

2015-12-15 13:17:45.697 OC_05_01[2641:60558] newArray2=shenzhengnan

2015-12-15 13:17:45.697 OC_05_01[2641:60558] newArray3=chenyaoxing

2015-12-15 13:17:45.698 OC_05_01[2641:60558] newArray4=wuzhipeng

2015-12-15 13:17:45.698 OC_05_01[2641:60558] string = zengxinsheng-xuyu-shenzhengnan-chenyaoxing-wuzhipeng

2015-12-15 13:17:45.699 OC_05_01[2641:60558] string1 = 123√456√789√000

2015-12-15 13:17:45.699 OC_05_01[2641:60558] newarray2(

    123,

    456,

    789,

    000

)

2015-12-15 13:17:45.699 OC_05_01[2641:60558] newarray3=123456789000

Program ended with exit code: 0


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值