nil NULL和NSNull 的使用

2021-07-04 16:59:32 字數 1308 閱讀 7664

一、區別

1. nil: 是乙個物件值;

2. null: 是乙個通用指標(泛型指標);

3. nsnull: 是乙個物件,用在不能使用nil的場合中;因為在nsarray和nsdictionary中nil中有特殊的含義(表示列表結束),所以不能在集合中放入nil值。如要確實需要儲存乙個表示「什麼都沒有」的值,可以使用nsnull類。nsnull只有乙個方法:

+ (nsnull *)null;

總之:nil是用來給物件賦值(oc任何物件都屬於id型別),null則給任何指標賦值,null不能與nil進行互換,nil用於類指標賦值(在oc中類是乙個物件,是類的meta-class例項),而nsnull則用於集合操作,雖然他們表示的都是空值,但使用的場合完全不同,所以要求辨明之間的區別,用於適當的場合。

4. 例項

id object = nil; 

// 判斷物件不為空

if (object)

// 判斷物件為空

if (object == nil)

陣列初始化,空值結束
nsarray *array = [[nsarray alloc] initwithobjects:@"first", @"second", nil];
判斷陣列元素是否為空
nsstring *element = [array objectatindex:2];  

if ((nsnull *)element == [nsnull null])

void null1()
二、繼續**

1. nil: 一般賦值給空物件;

2. null: 一般賦值給nil以外的空物件,如sel等;

3. nsnull: 只有乙個方法,[nsnull null]用來在nsarray和nsdictionary中加入非nil(表示列表結束)的空值.[nsnull null]是乙個物件,他用在不能使用nil的場合;

4. 當向nil傳送訊息時,返回no,不會有異常,程式將繼續執行下去;

而向nsnull的物件傳送訊息時會收到異常,

這是因為nsarray 與 nsdictionary 中nil有特殊的含義(表示列表結束)。所以不能在集合中放入nil值。如果確實需要儲存乙個「表示什麼都沒有」的值,可以使用nsnull類。

5.nil是乙個物件指標為空,nil是乙個類指標為空,null是基本資料型別為空。

6.

ios nil NULL和NSNull 的使用

nil用來給物件賦值 objective c中的任何物件都屬於id型別 null則給任何指標賦值,null和nil不能互換,nil用於類指標賦值 在objective c中類是乙個物件,是類的meta class的例項 而nsnull則用於集合操作,雖然它們表示的都是空值,但使用的場合完全不同。示例...

ios nil NULL和NSNull 的使用

nil用來給物件賦值 objective c中的任何物件都屬於id型別 null則給任何指標賦值,null和nil不能互換,nil用於類指標賦值 在objective c中類是乙個物件,是類的meta class的例項 而nsnull則用於集合操作,雖然它們表示的都是空值,但使用的場合完全不同。示例...

ios nil NULL和NSNull 的使用

nil用來給物件賦值 objective c中的任何物件都屬於id型別 null則給任何指標賦值,null和nil不能互換,nil用於類指標賦值 在objective c中類是乙個物件,是類的meta class的例項 而nsnull則用於集合操作,雖然它們表示的都是空值,但使用的場合完全不同。示例...