NSDictionary初始化的坑
来源:互联网 发布:怎么签署淘宝空间协议 编辑:程序博客网 时间:2024/06/06 05:29
由于今天在NSDictionary初始化的时候跳坑,出现哎破破Crash,故写此博客和大家分享下如何跳坑
NSDictionary初始化
Objective-C中,NSDictionary初始化的方法有很多种
方法1:
[NSDictionary dictionaryWithObjectsAndKeys:<#(id), ...#>, nil]
方法2:
NSDictionary *dic = @{@"key":value}
坑在哪里?
坑就在第二种初始化方法 NSDictionary *dic = @{@”key”:value}
它到底是如何坑的呢?
如果你的value是为nil 必将引发崩溃:
'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]意思就是说使用[__NSPlaceholderDictionary initWithObjects:forKeys:count:]这个初始化方法,发现keys count和objcects的个数不匹配了
如何规避?
在使用@{@”key”:value} 这种方式初始化的时候,一定要对value做是否为nil的判断,为nil就不要加入Dictionary或使用标准的初始化方法:
NSDictionary dictionaryWithObjectsAndKeys:value1,@”v1”,value2,@”v2”,value3,@”v3”, nil];
或其它的几个初始化方法进行初始化,这样如果value为nil就不会加入字典,使用 objectForKey:取出来的对象就会为nil对象,不会引发崩溃。
关联:
使用@[]方法初始化NSArray也有此坑,规避方法同字典一样
总结:
看过此坑的童鞋,以后记得避免。
0 0
- NSDictionary初始化的坑
- NSDictionary初始化的坑
- NSDictionary初始化的坑
- iOS开发 NSDictionary初始化的坑
- NSArray和NSDictionary的简单初始化
- iOS--NSDictionary字典的初始化增删
- OC中的NSDictionary初始化
- iOS NSDictionary初始化问题
- nil指针对NSDictionary及NSArray初始化的影响
- iOS -- NSDictionary 两种初始化方式的区别
- iOS NSDictionary及NSArray初始化后nil指针的影响
- 【OC学习-19】NSDictionary字典对象的初始化以及常用操作方法归纳
- Foundation框架(9)——NSDictionary的初始化、用法、遍历、内存管理
- ios NSNumber NSArray NSDictionary 初始化简写
- 多层NSDictionary 的读取
- NSDictionary 的用法
- NSDictionary的遍历
- NSDictionary 的用法
- Corporate Identity
- Linux策略路由使用场景及验证
- 百度地图debug.keystore
- mongo $where的使用
- 关于安卓的那些事
- NSDictionary初始化的坑
- KeyTool用法详解,CA证书
- synchronized
- ibatis的几个类型属性
- 获取当前时间所在凌晨和23:59:59
- Linux下hadoop2.6和Spark环境搭建
- LayoutInflater 用法总结
- 【Unity】当人物主角被障碍物遮挡后,将障碍物半透明化
- python汉字编码的问题