NSDictionary初始化的坑
来源:互联网 发布:学淘宝美工需要多少钱 编辑:程序博客网 时间:2024/06/06 19:22
由于今天在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也有此坑,规避方法同字典一样
总结:
看过此坑的童鞋,以后记得避免。
参考资料:
Ry’s Objective-C Tutorial
Enjoy.
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 的用法
- iOS 分类之NSString+MD5
- MySQL----error:no query specified
- iOS 7系列译文:忘记NSURLConnection,拥抱NSURLSession吧!
- Java设计模式(四):原型模式深拷贝的两种实现方式,以及和new对象的性能测试对比
- Centos 7 PHP开发环境搭建
- NSDictionary初始化的坑
- Matlab中读取txt文件的几种方法
- Java抽象类的学习
- 【深入浅出Node.js系列七】Connect模块解析
- AR涂色类app使用ShareRec录制及分享视频
- 多线程如何实现同步
- webstorm常用快捷键
- <快速幂模> HDU 2035
- Bean 'shiroFilter'; nested exception is java.lang.IllegalArgumentException: Bean name must not be em