您的位置:首页 > 移动开发 > IOS开发

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

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

前言:

在写作之前 我想让大家看一些 请求数据:这些 数据 可以看的 出 我们 要解析的 东西,不过 大家 要注意 ⚠ 一下 "<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。。。。。。。。。。。。。。。。。。。。。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: