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,这也是字面量语法的局限性,总的来说,有点要大于缺点,因为字面量语法不需要来初始化,也不需要繁琐的语法来添加内容,更加简洁。
相关文章
- 微软证实Office软件将登陆iOS和Android平台
- iOS开发之SQLite--C语言接口规范(三)——Binding Values To Prepared Statements
- 关于微信小程序在ios中无法调起摄像头问题
- iOS短信验证码SDK集成文档
- iOS开发 - 文件压缩与解压缩
- IOS的唯一标识符问题(转)
- ios-deploy was not found
- iOS定位原理和使用建议(转)
- 【IOS-COCOS2D-X 游戏开发之九】COCOS2DX利用CCSAXPARSER解析XML数据&CCMUTABLEDICTIONARY使用与注意!
- IOS中 浅谈iOS中MVVM的架构设计与团队协作
- IOS使用xcode可视化图像编辑功能进行图片拉伸
- iOS swift5 数组与字符串转换
- iOS swift5.5 Initialization 初始化方法
- ios swift5 扩展 extensions
- Ios开发之 -- js和ios的交互