nil,NULL,NSNull的區別

nil,NULL,NSNull的區別

主要就如下幾點:html

一、nil:通常賦值給空對象;spa

二、NULL:通常賦值給nil以外的其餘空值。如SEL等;指針

  舉個栗子(好重啊~):htm

    [NSApp beginSheet:sheet
                modalForWindow:mainWindow對象

                modalDelegate:nil //pointing to an objectblog

                didEndSelector:NULL //pointing to a non object/classget

                contextInfo:NULL]; //pointing to a non object/classio

三、NSNULL:NSNull只有一個方法:+ (NSNull *) null;class

  [NSNull null]用來在NSArray和NSDictionary中加入非nil(表示列表結束)的空值.泛型

四、當向nil發送消息時,返回NO,不會有異常,程序將繼續執行下去;

  而向NSNull的對象發送消息時會收到異常。

-------------------------

如下轉載自:http://blog.sina.com.cn/s/blog_722017670100v2b4.html

 

nil: A null pointer to an Objective-C object.  ( #define nil ((id)0)  )

nil 是一個對象值。

 

Nil: A null pointer to an Objective-C class.

 

NULL: A null pointer to anything else.  ( #define NULL ((void *)0)  )

NULL是一個通用指針(泛型指針)。


NSNull: A class defines a singleton object used to represent null values in collection objects (which don't allow nil values).
[NSNull null]: The singleton instance of NSNull.

[NSNull null]是一個對象,他用在不能使用nil的場合。

由於在NSArray和NSDictionary中nil中有特殊的含義(表示列表結束),因此不能在集合中放入nil值。如要確實須要存儲一個表示「什麼都沒有」的值,能夠使用NSNull類。NSNull只有一個方法:

+ (NSNull *) null;

相關文章
相關標籤/搜索