iOS中nil 、NULL、 Nil 、NSNull的区别

   1.nil

  >Defines the id of a null instance.

  定义一个实例为空, 指向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);

  }

  2.NULL

  >These macros define null values for classes and instances.

  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或者抛出异常。

  3.Nil

  >Defines the id of a null class.

  定义一个空的类

  Available in Mac OS X v10.0 through Mac OS X v10.4.

  Declared in NSObjCRuntime.h.

  Declared Inobjc.h

  >示例代码:

  Class someClass = Nil;

  Class anotherClass = [NSString class];

  4.NSNull

  >The NSNull class defines a singleton object used to represent null values in collection objects (which don’t allow nil values).

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

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

时间: 2024-11-02 20:57:55

iOS中nil 、NULL、 Nil 、NSNull的区别的相关文章

总结IOS中nil、Nil、NULL和NSNull区别_C 语言

NULL 对于学习过 C/C++ 语言的朋友,对 NULL 一定很熟悉吧?这就是在 C/C++ 中的空指针. 在 C 语言中, NULL 是无类型的,只是一个宏,它代表空.我们不研究 C++ 中的 NULL ,因为在 C++11 以后又有了新的定义,我们不深究. 这就是 C 语言中所谓的 NULL ( C++ 的定义比较复杂,这里不说了): Objective-C #if defined(__need_NULL) #undef NULL #ifdef __cplusplus # if !defi

iOS中nil、Nil、NULL、NSNull详解_IOS

ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质. nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interface 声明的 ObjC 对象. 例如: NSString *someString = nil; NSURL *someURL = nil; id someObject = nil; if (anotherObject == nil) // do something 定义: // objc.h #if

iOS中nil、Nil、NULL、NSNull详解

  这篇文章主要介绍了iOS中nil.Nil.NULL.NSNull详解的相关资料,需要的朋友可以参考下 ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质. nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interface 声明的 ObjC 对象. 例如: ? 1 2 3 4 NSString *someString = nil; NSURL *someURL = nil; id someObject = n

nil、Nil、NULL和NSNull区别

前言 记得曾经有不少朋友问过笔者,在Objective-C中nil和Nil以及NULL的区别.最重要的是,在面试中还有不少朋友常会被问到.记得当年刚找工作的时候,笔者就被面试官问到过,现在笔者在这里统一详细说明. NULL 对于学习过C/C++语言的朋友,对NULL一定很熟悉吧?这就是在C/C++中的空指针. 在C语言中,NULL是无类型的,只是一个宏,它代表空.我们不研究C++中的NULL,因为在C++11以后又有了新的定义,我们不深究. 这就是C语言中所谓的NULL(C++的定义比较复杂,这

ios nil、NULL和NSNull 的使用

nil用来给对象赋值(Objective-C中的任何对象都属于id类型),NULL则给任何指针赋值,NULL和nil不能互换,nil用于类指针赋值(在Objective-C中类是一个对象,是类的meta-class的实例), 而NSNull则用于集合操作,虽然它们表示的都是空值,但使用的场合完全不同. 示例如下: id object = nil;   // 判断对象不为空   if (object) {   }          // 判断对象为空   if (object == nil) { 

JavaScript中Null与Undefined的区别解析

  这篇文章主要介绍了JavaScript中Null与Undefined的区别解析,本文给出了多个代码实例讲解它们之间的区别,需要的朋友可以参考下 在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undefined类型只有一个值,即undefined.当声明的变量还未被初始化时,变量的默认值为undefined. Null类型也只有一个值,即null.nu

ios 9中的3Dtouch 动态和静态有什么区别

问题描述 ios 9中的3Dtouch 动态和静态有什么区别 UIApplicationShortcutItem 和UIMutableApplicationShortcutItem 有什么区别 解决方案 只有可变和不可变的区别啊,可变的对象是可以在原对象上修改,仅此而已,多一些方法

JavaScript中的null和undefined区别介绍_javascript技巧

JavaScript中存在2个代表信息不存在的特殊值:null和undefined.个人认为可以从以下角度来理解这两个特殊值之间的区别: 1.null代表有存储信息的容器(比如之前被赋过值的变量),但该容器中的内容为空. 2.undefined代表不存在用于存储信息的容器. JavaScript中的null与其它多数编程语言中的null没有什么区别,基本用于表示信息值为空:而在JavaScript中下述情况下表达式返回结果为undefined: 1.从未被赋过值的变量. 2.访问某个对象不存在的

Oracle数据库中对null值的排序及mull与空字符串的区别_oracle

order by排序之null值处理方法在对业务数据排序时候,发现有些字段的记录是null值,这时排序便出现了有违我们使用习惯的数据大小顺序问题.在Oracle中规定,在Order by排序时缺省认为null是最大值,所以如果是ASC升序则被排在最后,而DESC降序则排在最前.所以,为何分析数据的直观性方便性,我们需要对null的记录值进行相应处理. 这是四种oracle排序中NULL值处理的方法:1.使用nvl函数语法:Nvl(expr1, expr2)     若EXPR1是NULL,則返回