1. 程式人生 > >id型別、nil、Nil、NULL、NSNull型別是什麼?

id型別、nil、Nil、NULL、NSNull型別是什麼?

id型別:是一個獨特的資料型別,可以轉換為任何資料型別,id型別的變數可以存放任何資料型別的物件,在內部處理上,這種型別被定義為指向物件的指標,實際上是一個指向這種物件的例項變數的指標
id宣告的物件具有執行時特性,既可以指向任意型別的物件
nil:指向oc中物件的指標就是所謂物件的引用為空
Nil:指向oc中類的空指標
NULL:指向基本資料型別的空指標(C語言的變數的指標為空)
NSNull:在集合物件中,表示控制的物件
nil是一個物件指標為空,Nil是一個類指標為空,NULL是基本資料型別為空

id宣告的物件的特性:沒有*號、動態資料型別、可以指向任何類的物件(設定是nil)二不關心其具體型別、在執行時檢查其具體型別、可以對其傳送任何存在的訊息

其中nil和NULL的區別在於:在非ARC程式的編寫過程中兩個空是可以互換的,但是在ARC環境下,普通指標和物件引用被嚴格限制,不能交換使用,因此也儘量不互換使用nil和NULL