1. 程式人生 > >關於nil和 null和NSNull的區別

關於nil和 null和NSNull的區別

1、nil和null從字面意思來理解比較簡單,nil是一個物件,而NULL是一個值,我的理解為nil是將物件設定為空,而null是將基本型別設定為空的,個人感覺有點像屬性當中,基本型別分配為assign NSString型別一般分配copy,而物件一般用retain。而且我們對於nil呼叫方法,不會產生crash或者丟擲異常。
看一段

nil -> Null-pointer to objective- c object

NIL -> Null-pointer to objective- c class

null-> null pointer to primitive type or absence of data.

看一下用法

NSURL *url = nil;

Class  class = Nil;

int *pointerInt = NULL;

nil是一個物件指標為空,Nil是一個類指標為空,NULL是基本資料型別為空。這些可以理解為nil,Nil, NULL的區別吧。

2、NSNULL,NULL和nil在本質上應該是一樣的,NULL和nil其實就是0,但是在Objective-c中,對於像NSArray這樣的型別,nil或NULL不能做為加到其中的Object,如果定義了一個NSArray,為其分配了記憶體,又想設定其中的內容為空,則可以用[NSNULL null返回的對物件來初始化NSArray中的內容,我的感覺有點像C語言中malloc一個記憶體空間,然後用memset初始化這段空間裡的值為0。

相關推薦

關於nil nullNSNull區別

1、nil和null從字面意思來理解比較簡單,nil是一個物件,而NULL是一個值,我的理解為nil是將物件設定為空,而null是將基本型別設定為空的,個人感覺有點像屬性當中,基本型別分配為assign NSString型別一般分配copy,而物件一般用retain。而且我們對於nil呼叫方法,不會產生cr

NILNILNULLNSNULL區別

前言 記得曾經有不少朋友問過筆者,在Objective-C中nil和Nil以及NULL的區別。最重要的是,在面試中還有不少朋友常會被問到。記得當年剛找工作的時候,筆者就被面試官問到過,現在筆者在這裡統一詳細說明。 NULL 對於學習過C/C++

nilNilNULLNSNull區別

2. NSNull NSNull和nil的區別在於,nil是一個空物件,已經完全從記憶體中消失了,而如果我們想表達“我們需要有這樣一個容器,但這個容器裡什麼也沒有”的觀念時,我們就用到NSNull,我稱它為“值為空的物件”。如果你查閱開發文件你會發現NSNull這個類是繼承NSObject,並且只有

關於nil nullNSNull區別及相關問題

1、nil和null從字面意思來理解比較簡單,nil是一個物件,而NULL是一個值,我的理解為nil是將物件設定為空,而null是將基本型別設定為空的,個人感覺有點像屬性當中,基本型別分配為assign NSString型別一般分配copy,而物件一般用retain。而且我們對於nil呼叫方法,不會產生cr

iOS中nilNilNULLNSNull的理解用法詳解

nil 這個也是條件編譯的,那麼對於我們Objective-C開發來說,nil就代表((void *)0)。 我們使用nil表示Objective-C物件為空,如NSString *str = nil。 我們給物件賦值時一般會使用object = nil,表示我想把這個物件釋放掉;

ios學習——nilNULLNSNull

  nil用來給物件賦值(oc的任何物件都屬於id型別),NULL則給任何指正賦值,NULL和nil不能互換,nil用於類指標賦值(在oc中類是一個物件,是類的meta-class的例項),而NSNull則用於集合操作,雖然它們表示的都是空值,但使用場合完全不同,所以在編碼

string、Emptynull三者的區別

指向 空間 AD dst rar 取出 能力 討論 字段 本文轉自 http://www.cnblogs.com/mxxblog/archive/2013/08/22/3275387.html 這是一個及其常見的問題,網上已經有關於這個問題的很多討論。但是我覺得都是不求甚

equals()==null的用法區別

!= ima C/C++ lang bsp poi 一個 一起 amp str == null //判斷引用是否指向任何對象str.length == 0 //判斷引用指向的對象是否為空字符串,即字符串長度為0“”.equals(str) //判斷

undefinednull之間的區別

undefined表示變數宣告但並未賦值時的型別, null表示準備用來儲存物件,還沒有真正儲存物件的值。從邏輯角度看,null值表示一個空物件。 變數的資料型別還包括: 數字型別(number) 字串型別(string) 布林型別(boolean) 物件型別(

models中欄位引數blanknull的用法區別

blank當blank=True時,說明此處的資料可以不填,預設情況下為False,也就意味著預設情況下,所輸入的資料不得空,blank是和頁面表單有關,在頁面需要輸入引數的時候,如果在models裡面定義了blank=True時,那麼這個引數是可以不填寫的,如果是預設的話,如果沒有填寫,則會提示錯誤。 n

OC中nilNilNULLNSNULL的一些區別

雖然我們平常接觸的最多的是nil,但是如果對Nil、NULL、NSNULL、nil之間的還是傻傻分不清楚的話,沒準哪天“陰溝裡就翻船了”。(ps:其實我也是今天將這團亂麻理順) nil、Nil nil在Swift中表示的是值缺失,而在OC中它所代表的

mysql中空值null值的區別及處理方法總結

一直對空值和null值的概念理解不清晰,所以結合資料以及自己的理解對他們的區別和處理方式進行總結。首先就是在概念上的不同:1、空值不佔空間2、null值佔空間。打個比喻就是空值表示一個杯子是真空狀態,什麼都沒有,而null值是杯子中有空氣。接下就建立一個測試表比較它們之間的區

淺談iOS 中 nilNilnull以及NSNull區別

以下程式碼是直接在工程中驗證的,所以可以直接貼上到工程中檢視執行結果。 關於null的用法還不是太明確,歡迎交流。 //******************nil  Nil  null  NSNull**************     NSDictionary

nilNilNULLNSNull區別

1.nil 指向一個物件的指標為空 在objc.h中的定義如下所示: #ifndef nil # if __has_feature(cxx_nullptr) #   define nil nullptr # else #   define nil __DARWIN_

nullNULLnullptr””區別

突然想到這個有趣的問題:C語言和C++對大小寫是敏感的,也就是說null和NULL是區別對待的。NULL代表空地址,null只是一個符號。便來深究,看了很多資料,總結如下: 其實null和NULL都是字串(沒啥區別,歡迎高手糾錯!),具體看它們巨集定義被定義成為什麼值。

JAVA中isEmptynull以及""的區別

這是一個比較容易混淆的概念,為了弄清楚這個問題,最好的方法當然是寫程式來驗證,上程式碼吧~~: /** * */ package JavaTest; /** * @author wxwevenpc * @version 1.0 2012-11-25 */ pu

id型別、nilNilNULLNSNull型別是什麼?

id型別:是一個獨特的資料型別,可以轉換為任何資料型別,id型別的變數可以存放任何資料型別的物件,在內部處理上,這種型別被定義為指向物件的指標,實際上是一個指向這種物件的例項變數的指標 id宣告的物件

C#中的???,nullNullable

不能 ron repl 編譯器 提示 data- 外行 date 如果 1.單問號(?) 1.1 單問號運算符可以表示:可為Null類型,C#2.0裏面實現了Nullable數據類型 //A.比如下面一句,直接定義int為null是錯誤的,錯誤提示為無法將null轉

Objective-c nil, Nil, NULLNSNull區別

在OC中可能經常會遇到 nil,Nil,NULL和NSNull,下面分析一下之間的區別: Symbol Value Meaning NULL (void *)0 literal null value for C pointers nil (id)0 literal n

nilnull區別

點擊 指針 href 報錯 csdn per 區別 tail 對象 NULL? ? ?? ? 只能作為指針變量的值.如果1個指針變量的值是NULL值代表.代表這個指針不指向內存中的任何1塊空間 ? ?? ? NULL其實等價於0? NULL其實是1個宏.就是0 ? ? ?