iOS NSDictionary及NSArray初始化后nil指针的影响
来源:互联网 发布:怪物猎人4g数据库下载 编辑:程序博客网 时间:2024/06/15 16:28
//联系人:石虎 QQ: 1224614774昵称:嗡嘛呢叭咪哄
一、reason(原因)总结
reason *** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
reason *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[4]'
reason *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0]’
这个问题,一般是因为 nsarray或nsdictionary插入数据为空而造成的
二、reason截图
NSArray图:
NSDictionary图:
三、实例代码
假设我们现在要初始化一个{key1 : value1, key2 : value2, key3 : value3}的NSDictionary,一般有两种初始化方法:
1、使用标准的初始化方法:
NSDictionary *dictionary =[[NSDictionaryalloc] initWithObjectsAndKeys:value1,@"key1",value2,@"key2", value3 ,@"value3",nil];
2、使用ios6.0以后新支持的初始化方法:
NSDictionary *dictionary =@{@"key1" : value1,@"key2" : value2,@"key3" : value3};
现在我们对value1 value2 value3进行赋值,并把value2设为nil指针:
NSString *value1 =@"value1";NSString *value2 =nil;NSString *value3 =@"value3";
3、另一种解决方法就是使用标准的初始化方法,即第一种初始化方法。但同时也要注意一个问题,使用
NDictionary *dictionary = [[NSDictionaryalloc]initWithObjectsAndKeys:value1,@"key1",value2,@"key2", value3 ,@"value3",nil];
如果我们把其中一个key或者value设为nil指针,那么系统会判断为全部对象插入完成,即相当于我们初始化数组及字典时最后的nil。因此这种方法虽然能避免插入nil指针时抛出的异常,但可能会成为一个工程中很大的安全隐患,并且难以发现。所以推荐使用第二种初始化方法,并对nil指针进行必要的判断,选择性使用[NSNull null]
来实现特点的需求。同理,使用NSArray时也应该注意这类问题。
谢谢!!!
- iOS NSDictionary及NSArray初始化后nil指针的影响
- nil指针对NSDictionary及NSArray初始化的影响
- ios NSNumber NSArray NSDictionary 初始化简写
- NSArray和NSDictionary的简单初始化
- 【IOS开发】NSArray,NSDictionary数据的保存
- 【IOS开发】NSArray,NSDictionary数据的保存
- iOS中NSArray, NSSet, NSDictionary的使用
- 【读书笔记】iOS-NSDictionary与NSArray的比较
- ios+iphone NSDictionary / NSMutableDictionary 及 NSArray / NSmutableArray (实例)
- NSDictionary,NSArray的简写
- NSArray , NSDictionary 的用法...
- IOS中数组的使用(NSArray, NSSet, NSDictionary)
- IOS 中数组、集合、字典的使用(NSArray, NSSet, NSDictionary)
- IOS中数组的使用(NSArray, NSSet, NSDictionary)
- IOS深度拷贝,NSArray,NSDictionary的分类(Category)
- IOS中数组的使用(NSArray, NSSet, NSDictionary)
- iOS NSString,NSArray,NSDictionary的Copy属性使用
- iOS中数组的使用(NSArray,NSSet,NSDictionary)
- Java基础知识---基本数据类型及类型转化
- 利用Fabry-Perot扫描干涉仪测量激光的纵模
- node.js学习之读取文件初步
- win10更改用户账户控制设置方法
- 创建kettle资源库
- iOS NSDictionary及NSArray初始化后nil指针的影响
- 全志H3Android SDK开发环境搭建和编译异常问题整理
- 【Azure】两台Linux虚拟机挂载共享文件
- Java多线程技术杂谈
- IP地址、子网掩码、网络号、主机号、网络地址、主机地址
- 区块链世界的新维度
- SVN
- json根据一个值返回对象,filter方法使用
- Jetson TX2安装TensorFlow注意事项