一、nil
當(dāng)一個對象置為nil時,這個對象的內(nèi)存地址就會被系統(tǒng)收回。置空之后是不能進(jìn)行retain,copy等跟引用計數(shù)有關(guān)的任何操作的。
二、Nil
nil完全等同于Nil,只不過由于編程習(xí)慣,人們一般把對象置空用nil,把類置空用Nil。
三、NULL
這個是從C語言繼承來的,就是一個簡單的空指針
四、[NSNull null]
這個才是重點:[NSNull null]和nil的區(qū)別在于,nil是一個空對象,已經(jīng)完全從內(nèi)存中消失了,而如果我們想表達(dá)“我們需要有這樣一個容器,但這個容器里什么也沒有”的觀念時,我們就用到[NSNull null],它就是為“值為空的對象”。如果你查閱開發(fā)文檔你會發(fā)現(xiàn)NSNull這個類是繼承NSObject,并且只有一個“+ (NSNull *) null;”類方法。這就說明NSNull對象擁有一個有效的內(nèi)存地址,所以在程序中對它的任何引用都是不會導(dǎo)致程序崩潰的。