iOS - nil、Nil、NULL、NSNull简单介绍

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。。。。。。。。。。。。。。。。。。。。。。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值