zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

iOS开发 - 字面语法之数组注意事项

ios数组开发 语法 注意事项 字面
2023-09-11 14:21:22 时间
//请看题,下面的写法用字面量语法来写,并且是可变数组
    NSString *str1 = @"Hello";
    NSString *str2;
    NSString *str3 = @"World!";
    NSArray *array0 = [NSArray arrayWithObjects:str1,str2,str3, nil];

大家怎么来写?是不是这样?

    NSMutableArray *arrayMutable = [@[str1,str2,str3]mutableCopy];

然后你会发现程序崩溃了:

2017-11-01 19:05:23.771334+0800 11[15655:3673082] *** 
Terminating app due to uncaught exception 
'NSInvalidArgumentException', reason: '*** -
[__NSPlaceholderArray initWithObjects:count:]: attempt to 
insert nil object from objects[1]'


NSArray *array0 = [NSArray arrayWithObjects:str1,str2,str3, nil];

中却没有崩溃,但是却有一个问题,数组以nil结束,所以在str2时数组默认结束,数组中只有一个str1;

用字面量语法写的时候,因为字面量语法时,若其中一项为nil,则会抛出异常,结束程序,这也是字面量语法更为安全的原因,比创建好数组才发现元素少了要好。
因为字面量语法写出来的数字字典都是不可变的,所以为了让其可变,需要对其进行mutableCopy,这也是字面量语法的局限性,总的来说,有点要大于缺点,因为字面量语法不需要来初始化,也不需要繁琐的语法来添加内容,更加简洁。