iOS中nil 、NULL、 Nil 、NSNull,你真的了解吗?

简介: 今天突然间对nil和NULL产生了疑问,就在网上查了一下相关的问题,看完之后终于有了清晰的认识,跟我一样有疑问的童鞋们可以看看。

今天突然间对nil和NULL产生了疑问,就在网上查了一下相关的问题,看完之后终于有了清晰的认识,跟我一样有疑问的童鞋们可以看看。


  1. nil,定义一个空的实例,指向OC中对象的空指针。


示例代码:
 NSString *someString = nil;
 NSURL *someURL = nil;
 id someObject = nil;
 if (anotherObject == nil) // do something
 用法讲解:
  当对某个对象release 的同时最好把他们赋值为nil,这样可以确保安全性,如果不赋值nil,可能导致程序
  崩溃.
       NSArray * array = [NSArray arrayWithObjects:@"test",@"test1" ,nil];
       [array release];
       
       if (array)
       {
       //仅仅对数组release,并没有赋值为nil,在程序某个地方如果继续对数组操作,程序直接崩溃
           NSString * string = [array objectAtIndex:0];
           NSLog(@"%@",string);
       }


  1. NULL,NULL可以用在C语言的各种指针上。


#define __DARWIN_NULL 
 #define__DARWIN_NULLConstants
 示例代码:
 int *pointerToInt = NULL;    
 char *pointerToChar = NULL;  
 struct TreeNode *rootNode = NULL;
 用法讲解:
   在Objective-C里,nil对象被设计来跟NULL空指针关联的。他们的区别就是nil是一个对象,而NULL只是一个
   值。而且我们对于nil调用方法,不会产生crash或者抛出异常。


  1. Nil,定义一个空的类


示例代码:  
 Class someClass = Nil; 
 Class anotherClass = [NSString class];


  1. NSNull,NSNull是一个类,它定义了一个单例对象用于表示集合对象的空值


集合对象无法包含nil作为其具体值,如NSArray、NSSet和NSDictionary。相应地,nil值用一个特定的对象
 NSNull来表示。NSNull提供了一个单一实例用于表示对象属性中的的nil值。默认的实现方法中,
 dictionaryWithValuesForKeys:和setValuesForKeysWithDictionary:自动地将        NSNull和nil相互转换,因此您的对象不需要进行NSNull的测试操作。



相关文章
|
iOS开发 安全
iOS 给字典中插入nil的几种情景
NSString *str = nil; NSDictionary *dic = @{@"key":str}; //zs20171220 会崩溃'*** -[__NSPlaceholderDictionary initWithObjec...
1697 0
|
iOS开发
iOS 处理服务器返回的数据字符串为之 Null
昨晚遇到了无法将服务器返回的数据写在 plist 文件中的问题。我尝试打印了服务器返回的数据,发现好几项值为 Null !!! Null !!! 经过各种折腾之后 GitHub 上找到了爽快的解决处理服务器返回的数据字符串为 的方法。
1203 0
|
iOS开发 C语言 Swift
iOS - OC NSNull 空值
前言 @interface NSNull : NSObject 作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间。 NULL & nil 的区别: nil 是 OC 的,空对象,地址指向空的对象,指针地址指向的是 NULL。
1269 0
|
iOS开发 Swift
iOS - Swift NSNull 空值
前言 public class NSNull : NSObject, NSCopying, NSSecureCoding 作为占据空间的一个空值,如用在数组或字典中占据一个没有任何值的空间。 1、NSNull 的创建 // 返回一个单例类对象 let nl:NSNull ...
1184 0
|
iOS开发
iOS接收null的处理方法
经常服务器返回的数据,有null,还有nil,如果在模型层不处理的话,到时候数据展现时,一定会崩啊,最近决心要解决这个问题,所以查看了一些资料后,有答案了: - (id) setNoNull:(id)aValue{ if (aValue == ...
854 0
|
iOS开发 存储
ios nil、NULL和NSNull 的使用
<p style="font-size:14px; border:0px; margin-top:0px; margin-bottom:0px; padding-top:0px; padding-bottom:0px; color:rgb(69,69,69); font-family:tahoma,helvetica,arial; line-height:21px"> nil用来给对象赋
1589 0
|
iOS开发 开发工具
IOS中类和对象还有,nil/Nil/NULL的区别
类与对象的概念 类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法)。 对象是类的一个实例,是一个具体的事物。
1028 0
|
6月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用合集之从MySQL同步数据到Doris时,历史数据时间字段显示为null,而增量数据部分的时间类型字段正常显示的原因是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
下一篇
无影云桌面