nil: OC中对象为空,指向不存在的对象指针
id someObj = nil;
Nil:OC中类为空,指向0的类指针
Class someClass = Nil;
NULL:C指针为空,在指针环境中相当于0
char *str = NULL;
NSNull
下面是 NSNull的头文件
@interface NSNull : NSObject <NSCopying, NSSecureCoding>
+ (NSNull *)null;
@end
可以看到一个Objective-C类,它表示的是空值,即什么都不存。只有一个+ (NSNull *)null; 单例方法,该类通常用于在集合对象中保存一个空的占位对象。
NSArray *arr = [NSArray arrayWithObjects:<#(nonnull id), ...#>, nil];
//这是个NSArray 对象声明方法 我们可以看到后面有个 nil,这个nil就代表数组对象截止为止
NSArray *arr = [NSArray arrayWithObjects:@"apple",@"pear",nil,@"watermelon"];
//这里的watermelon就不算是arr中的数据,会被抛弃
//使用NSNull
NSArray *arr1 = [NSArray arrayWithObjects:@"apple",@"pear",[NSNull null],@"watermelon"]; 这种写法程序会崩溃
NSArray *arr2 = [NSArray arrayWithObjects:@"apple",@"pear",[NSNull null],@"watermelon",nil];这种不会,记得加末尾nil
//这里的watermelon就还存在,相当于占位
打印下上面的arr 和 arr2 :
arr1:(
apple,
pear
)
arr2:(
apple,
pear,
"<null>",
watermelon
)
总结
image.png
网友评论