?一乏奥、nil
我們給對象賦值時一般會使用object = nil谅畅,表示我想把這個對象釋放掉登渣;
或者對象由于某種原因,經(jīng)過多次release毡泻,于是對象引用計數(shù)器為0了胜茧,系統(tǒng)將這塊內(nèi)存釋放掉,這個時候這個對象為nil仇味,我稱它為“空對象”呻顽。(注意:我這里強(qiáng)調(diào)的是“空對象”,下面我會拿它和“值為空的對象”作對比5つ@缺椤!)
二贩挣、NSNull
NSNull和nil的區(qū)別在于喉前,nil是一個空對象,已經(jīng)完全從內(nèi)存中消失了王财,而如果我們想表達(dá)“我們需要有這樣一個容器卵迂,但這個容器里什么也沒有”的觀念時,我們就用到NSNull绒净,我稱它為“值為空的對象”见咒。如果你查閱開發(fā)文檔你會發(fā)現(xiàn)NSNull這個類是繼承NSObject,并且只有一個“+ (NSNull *) null疯溺;”類方法论颅。這就說明NSNull對象擁有一個有效的內(nèi)存地址,所以在程序中對它的任何引用都是不會導(dǎo)致程序崩潰的囱嫩。
三恃疯、Nil
nil和Nil在使用上是沒有嚴(yán)格限定的,也就是說凡是使用nil的地方都可以用Nil來代替墨闲,反之亦然今妄。只不過從編程人員的規(guī)約中我們約定俗成地將nil表示一個空對象,Nil表示一個空類鸳碧。
四盾鳞、NULL
我們知道Object-C來源于C、支持于C,當(dāng)然也有別于C瞻离。而NULL就是典型C語言的語法腾仅,它表示一個空指針躲履,參考代碼如下:
int *ponit = NULL;