【iOS的NSNULL nil Nil 】

前言

偶然看到了NSNULL 简单了解他的兄弟nil Nil记录一下。

NSNULL Nil nil

在iOS中,nil、Nil和NSNull都表示“空值”的概念,但它们在使用时有所不同。

nil和Nil都表示空指针,可以用于指针类型的变量、对象类型的变量、和Objective-C对象的参数和返回值中。nil和Nil本质上是一样的,只是nil是指向id类型的空指针,而Nil是指向Class类型的空指针

NSString *str1 = nil;
UIView *view1 = Nil;

  • 注意对象为nil,它为“空对象”。**(注意:是“空对象”,不是“值为空的对象”)**与NSNULL区别
  • 对象为nil 无法访问他的属性,但是可以使用对象的方法 ,无响应。
NSMutableArray *dct = nil;
        [dct addObject:@"1"];

请添加图片描述

nil 和 Nil 区别

编程人员的规约中我们约定俗成地将nil表示一个空对象,Nil表示一个空类。

NSNULL

NSNull是一个Objective-C类,用于表示一个空对象。它通常用于在集合类型(如NSArray和NSDictionary)中存储一个空对象,因为这些集合类型不能存储nil值(在JSONMOdel的源码看到该对象,现在知道为什么用它了)
请添加图片描述
直接使用nil会警告⚠️

改为即可消除警告。

 NSMutableArray *dct;
//        [dct addObject:nil];
        [dct addObject:[NSNull null]];

总结:NSNull和nil的区别在于,nil是一个空对象,已经完全从内存中消失了,而如果想表达“我们需要有这样一个容器,但这个容器里什么也没有”的观念时,就要用到NSNull,它是“值为空的对象”。
nil和Nil表示空指针,而NSNull表示空对象。在实际使用中,需要根据具体情况选择使用哪种方式来表示“空值”。

你可能感兴趣的:(ios,objective-c,开发语言)