IOS中nil/Nil/NULL的区别

nil:指向oc中对象的空指针

Nil:指向oc中类的空指针

NULL:指向其他类型的空指针,如一个c类型的内存指针

NSNull:在集合对象中,表示空值的对象

[NSNull null]通常作为占位符作用

举例:

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计算准确

时间: 2024-10-05 11:38:41

IOS中nil/Nil/NULL的区别的相关文章

iOS中类和对象,还有nil,Nil,NULL的区别

一.类和对象 类与对象的概念: 1.类是对同一类事物的高度抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法) 2.对象是类的一个实例,是一个具体的事物 3.类其实就是一种数据类型,它的变量就是对象 4.类与类之间的关系--继承关系 eg:学生与小学生,小学生也是学生,所以学生是小学生的父类,小学生是学生的子类 OC与面向对象: 1.对象是oc程序的核心.“万事万物皆对象”是程序中的核心思想 2.类是用来创建同一类型的对象的模板,在一个类中定义了该类对象所具有的成员变量及方法

iOS-nil,Nil,NULL的区别

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

nil 与 null 的区别

nil 与 null 的区别 nil 连对象都没有 null 有对象,但对象内容为空 以NSString 类为例 NSString *str1 = nil; //连字符串对象都没有 控制台输出 (null) NSString *str2 = null: //有字符串对象,只是字符串里没有内容,即指向一个空对象. 控制台输出 (null) // NSString 这个类比较特别,因为用的非常普遍,所以不用 alloc 来创建,可以直接以下面这种方式来创建 NSString *str3 = @"&q

IOS中Retain和Copy的区别

IOS中Retain和Copy的区别 1 ,可读性: readonly  . readwrite@property(readwrite,....) valueType value;这个属性是变量的默认属性,就是如果你 (readwrite and readonly 都没有使用,那么你的变量就是 readwrite 属性 ) ,通过加入 readwrite 属性你的变量就会有 get 方法,和 set 方法.property(readonly,...) valueType value;这个属性变量

javascript中undefined和null的区别详解

一.问题的由来 永远不要直接使用undefined进行变量判断使用字符串"undefined"对变量进行判断 这里,undefined是原始值,在JS中undefined出现只有两种情况,一种是变量未定义.一种是定义了变量,但是没有赋值. 如果这个地方person未定义,那么利用person===undefined全等判断就会报错,person未定义但是如果使用typeof来判断,那么就不会报错了. ep: alert(person == undefined);//报错 person

iOS中使用nil NULL NSNULL的区别

nil NULL NSNULL的区别主要以下几点 1.nil:一般赋值给空对象 2.NLL:一般赋值给nil之外的其他空值.入SEL等. 3.NSULL:NSNULL只有一种方法+ (NSNull *) null; [NSNull null]用来在NSArray和NSDictionary中加入非nil(表示列表结束)的空值 4.注意:当想ni发送信息的时候,返回NO,不会有异常,程序可以继续执行下去:而向NSNULL对象发送消息的时候会收到异常 nil: A null pointer to an

Nil,nil,NSNULL,NULL的区别

一.nil 我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉: 或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,这个时候这个对象为nil,我称它为"空对象".(注意:我这里强调的是"空对象",下面我会拿它和"值为空的对象"作对比!!!) 所以对于这种空对象,所有关于retain的操作都会引起程序崩溃,例如字典添加键值或数组添加新原素等. 二.NSNull NSNull和ni

JavaScript中undefined与null的区别

通常情况下, 当我们试图访问某个不存在的或者没有赋值的变量时,就会得到一个undefined值.Javascript会自动将声明是没有进行初始化的变量设为undifined. 如果一个变量根本不存在会发生什么事: >>> fooReferenceError: foo is not defined 我们得到了一个错误信息.我们在该变量上用typeof操作符看看它是什么类型: >>> typeof foo"undefined" 我们得到的结果为字符串“u

nil和null的区别

NULL? ? ?? ? 只能作为指针变量的值.如果1个指针变量的值是NULL值代表.代表这个指针不指向内存中的任何1块空间 ? ?? ? NULL其实等价于0? NULL其实是1个宏.就是0 ? ? ? 2. nil ? ?? ? 只能作为指针变量的值.代表这个指针变量不指向内存中的任何空间.? ?? ? nil其实也等价于0也是1个宏.就是0. ? ?? ? 所以, NULL和nil其实是一样的. ? ? ? 3. 使用建议. ?? ? ?? ? 虽然使用NULL的地方可以是nil使用 ni

JS中undefined与null的区别

1.概述: 在JavaScript中存在这样两种原始类型:Null与Undefined.这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? 有人说这两个返回值,没有什么区别,只是历史遗留问题罢了,其实还是有一点区别的. 2.null和undefined的发展史: 大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil. 有点奇怪的是,Ja