概念
iOS开发中经常会碰到”空”的使用,这里提到的空包含NULL,nil,NSNull,Nil。在计算的逻辑世界中用逻辑的’存在’来表示现实世界中的”不存在”,这个概念来自NSHipster
NULL 空指针
C 语言中0表示”不存在”表示空,在Objective-C中 NULL表示指针环境中的0,这是Objective-C是C的一个超集而引入的,可以理解为是空值,值类型。
nil 空对象指针
Objective-C在表示”不存在”的基础上定义了nil,用来表示指向一个不存在的对象指针,对象指针,对象指针,重要的话说三遍,虽然nil也可以表示0,当做值类型使用,但是要明确意义。
NSNull 空对象
NSNull在Foundation中使用,可以理解为将NULL或者nil进行包装或封装的对象,一般在NSArray,NSSet与NSDictionary 中不能出现nil值时使用。
Nil 指向零的类指针
常在Foundation/NSObjCRuntime.h中,这个一般开发不使用,但是要了解。
表示 | 值 | 含义 |
---|---|---|
NULL | (void *)0 | C指针的字面零值 |
nil | (id)0 | Objective-C对象的字面零值 |
NSNull | [NSNull null] | 表示零值的单独对象 |
Nil | (Class)0 | Objective-C类的字面零值 |