iOS - nil、Nil、NULL、NSNull简单介绍
2016-03-23 18:37
453 查看
nil、Nil、NULL、NSNull的区别
nil:指向一个对象的空指针
Nil:指向一个类的空指针
NULL:指向其他类型(如:基本类型、C类型)的空指针
NSNull:通常表示集合中的空值
举例:
NSURL *url = nil;
Class class = Nil;
int *pointerInt = NULL;
NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], [NSNull null], [[NSObject alloc] init], [[NSObject alloc] init], nil];
为什么上面的array里面的空对象不直接用nil?
如果用nil,就会变成NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], nil, [[NSObject alloc] init], [[NSObject alloc] init], nil];,那么数组到第二个位置就会结束。打印[array count]的话会显示1而不是4
所以[NSNull null]通常可以作为一个数组的占位符,从而是数组的count计算准确
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
文/HenryGao简书(简书作者)
原文链接:http://www.jianshu.com/p/007212d16cc7
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
问题的 思路 与方法 ,希望可以 帮助大家在遇到同样的问题的时候 有个参照。
3.(重头戏 isKindOfClass ) 利用它 来 把我们 的 "<null>"识别出来;
{
NSString *str1 = [dic objectForKey:str];
if ([str1 isKindOfClass:[NSNull class]])
{
NSLog(@"--------------%@",str1);
}
else
{
//尽情享受取值的 乐趣吧。。。。。。。
}
}
nil:指向一个对象的空指针
Nil:指向一个类的空指针
NULL:指向其他类型(如:基本类型、C类型)的空指针
NSNull:通常表示集合中的空值
举例:
NSURL *url = nil;
Class class = Nil;
int *pointerInt = NULL;
NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], [NSNull null], [[NSObject alloc] init], [[NSObject alloc] init], nil];
为什么上面的array里面的空对象不直接用nil?
如果用nil,就会变成NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], nil, [[NSObject alloc] init], [[NSObject alloc] init], nil];,那么数组到第二个位置就会结束。打印[array count]的话会显示1而不是4
所以[NSNull null]通常可以作为一个数组的占位符,从而是数组的count计算准确
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
文/HenryGao简书(简书作者)
原文链接:http://www.jianshu.com/p/007212d16cc7
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
前言:
在写作之前 我想让大家看一些 请求数据:这些 数据 可以看的 出 我们 要解析的 东西,不过 大家 要注意 ⚠ 一下 "<null>"这样的空值数据,在对 请求数据 本地化的时候 或者是 我们 建立 数据Model的时候,我们 一定会对 请求数据解析 并取出 其中的 值。 这里 我们 需要注意的是 "<null>" 这个 空数据 我们在取值的时候 会造成程序的崩溃,因此我们 我们 要怎么避免哪? 可能有小伙伴们想到了一些 方法 。。。这里 我也简单 说一下 我解决这个问题的 思路 与方法 ,希望可以 帮助大家在遇到同样的问题的时候 有个参照。
思路:
好啦,我们 可以想一下 我们想要取值的话 我们可以 判断 一下 我们的 数据 是不是 "<null>"然后对数据进一步操作,当让 如果 我们 的 数据少 可以 一个一个 遍历(但是 也是 累呀 );这里 我们整理一下自己的思想,我们 可以:1.获取我们请求数据的所有Keys: [字典 allKeys]
2.利用OC 遍历法 for in (for in 遍历)
3.(重头戏 isKindOfClass ) 利用它 来 把我们 的 "<null>"识别出来;
实现代码:
for (NSString *str in [dic allKeys]){
NSString *str1 = [dic objectForKey:str];
if ([str1 isKindOfClass:[NSNull class]])
{
NSLog(@"--------------%@",str1);
}
else
{
//尽情享受取值的 乐趣吧。。。。。。。
}
}
总结:
可以看出的是 我们 的 问题 可能会是 各种各样的 、 不可控的 。 我们 解决问题的 思路 也不要太过固守。如果 这个 问题 我们 简单的 比较 是否 为 nil 、 null 的话 是不能 解决问题的 。Working。。。。。。。。。。。。。。。。。。。。。。。。相关文章推荐
- 提高iOS开发效率的第三方框架等--不断更新中。。。
- ios自定义工具类
- 绘制多边形和不规则按钮
- ios中audio session纪录
- iOS开发 pct创建和绝对路径$(SRCROOT
- iOS在Xcode 7.2 里制作 Framework 的简单过程
- iOS数据懒加载和NSUserdefault基本使用
- iOS [[NSBundle mainBundle] pathForResource:@"" ofType:@""]无法获取到文件
- ios文件目录
- iOS 归档宏
- ios开发集成支付宝
- iOS 无缝连接滚动轮播图的一种实现思路
- iOS十六进制和字符串的相互转换
- iOS App设计模式开发之适配器模式使用的实战演练
- iOS _ 复制内容到剪切板
- 设计模式中的Memento备忘录模式的在iOS App开发中的运用
- iOS中数字的格式化 NSNumberFormatter
- iOS开发之制作越狱ios设备ipa包
- ios 富文本编辑器
- iOS 点击按钮实现拨打电话,发送短信功能