Nil,nil,NSNULL,NULL的区别

一、nil

我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉;

或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,这个时候这个对象为nil,我称它为“空对象”。(注意:我这里强调的是“空对象”,下面我会拿它和“值为空的对象”作对比!!!)

所以对于这种空对象,所有关于retain的操作都会引起程序崩溃,例如字典添加键值或数组添加新原素等。

二、NSNull

NSNull和nil的区别在于,nil是一个空对象,已经完全从内存中消失了,而如果我们想表达“我们需要有这样一个容器,但这个容器里什么也没有”的观念时,我们就用到NSNull,我称它为“值为空的对象”。如果你查阅开发文档你会发现NSNull这个类是继承NSObject,并且只有一个“+ (NSNull *) null;”类方法。这就说明NSNull对象拥有一个有效的内存地址,所以在程序中对它的任何引用都是不会导致程序崩溃的。

三、Nil

nil和Nil在使用上是没有严格限定的,也就是说凡是使用nil的地方都可以用Nil来代替,反之亦然。只不过从编程人员的规约中我们约定俗成地将nil表示一个空对象,Nil表示一个空类。参考代码如下:

nil、Nil、NULL和NSNull的理解

四、NULL

我们知道Object-C来源于C、支持于C,当然也有别于C。而NULL就是典型C语言的语法,它表示一个空指针,参考代码如下:

int *ponit = NULL;

时间: 2024-08-03 14:48:43

Nil,nil,NSNULL,NULL的区别的相关文章

Objective-c 中 nil, Nil, NULL和NSNull的区别

nil: A null pointer to an Objective-C object.( #define nil ((id)0)  ) nil表示一个Objective-C对象,这个对象的指针指向空 Nil: A null pointer to an Objective-C class. 首字母大写的Nil 和nil有一点不一样,Nil定义一个指向空的类,是class,而不是对象. #define Nil 0 NULL: A null pointer to anything else,  i

nil / Nil / NULL / NSNull 的区别

NULL在C中被定义,但是C并不包括nil.Nil和NSNull,这三者属于Objective-C(下称OC)部分. NULL是什么? int *a = NULL; A null pointer to anything else, is for C-style memory pointers. 它是C类型的一个指针变量,确切地说是一个空指针,不指向任何地方,在内存上它的值被设置为0.比如说int *pointer = NULL,指针变量pointer在内存里的值为0,不指向任何地方. 本质:空指

nil/Nil/NULL/NSNull的区别

平时开发过程中经常遇到这几个表示空的关键字:nil.Nil.NULL,一向搞不清楚,作为一个有两年开发经验的程序员,连那么基础的东西都不知道未免太丢人了. 首先要说明的是,nil.Nil.NULL三个关键字和NSNull类都是表示空,只是用处不一样,具体的区别如下: 一.NULL 1.声明位置 stddef.h文件 2.定义 [objc] view plaincopy #undef NULL #ifdef __cplusplus #  if !defined(__MINGW32__) &&

Objective-c nil, Nil, NULL和NSNull的区别

在OC中可能经常会遇到 nil,Nil,NULL和NSNull,下面分析一下之间的区别: Symbol Value Meaning NULL (void *)0 literal null value for C pointers nil (id)0 literal null value for Objective-C objects Nil (Class)0 literal null value for Objective-C classes NSNull [NSNull null] singl

NULL、nil、Nil、NSNull的区别

标志 值 含义 NULL (void *)0 C指针的字面零值 nil (id)0 Objecve-C对象的字面零值 Nil (Class)0 Objecve-C类的字面零值 NSNull [NSNull null] 用来表示零值的单独的对象

nil Nil NULL NSNull 之间的区别

nil -> Null-pointer to objective- c objectNIL -> Null-pointer to objective- c class  表示对类进行赋空值NULL: A null pointer to anything else,  is for C-style memory pointers. 用于对非对象指针赋空值,比如C指针看一下用法NSURL *url = nil:Class  class = Nil:int *pointerInt = NULL:ni

NULL & nil & Nil & NSNULL的区别

nil 是 OC 的,空对象,地址指向 空(0) 的对象 在 OC 中,可以给空对象发送任何消息,不会出现错误 NULL 是 C 的,空地址,地址的数值是 0,是一个长整数 表示地址是空 NSNull 用于解决向 NSArray 和 NSDictionary 等集合中添加空值的问题   值 定义 NULL (void *)0 C指针的字面零值 nil (id)0 Objective-C对象的字面零值 Nil (Class)0 Objective-C类的字面零值 NSNull [NSNull nu

OC 中NULL nil和NSNULL的区别

一.nil:nil是oc的,nil是一个空的对象,指针地址指向的是NULL 在oc中,可以给nil发送任何消息,都不会报错 二.NULL:是c的,空地址,数字,本身的数值是0  不能给NULL消息 三.NSNULL :是为了向数组或者字典中添加空值使用的 从Xcode6开始,取消了NULL的只能提示,因为swift 中没有NULL的概念,只有nil -在OC中,使用NULL或者nil都不会出错 -但是:从概念的角度而言,**(指针的指针)的参数,不想获取对ui内容,应该传入NULL -OC中提供

iOS 关于nil和Nil及null与<null>的区别

问题是这样的. NSDictionary *sample = [NSJSONSerialization JSONObjectWithData:received options:NSJSONReadingMutableLeaves error:&error]; NSString *messageInfo = [sample objectForKey:@"message"]; sample是一个字典,messsageInfo是从字典中根据key值取得的,然后通过log可以知道mes