您好,登錄后才能下訂單哦!
一、nil
我們給對象賦值時候,一般會使用object = nil 標示我向吧這個對象釋放掉:
或者對象由于某種原因,經過多次release,于是對象引用計數器為0了,系統將這塊內存釋放掉,這個時候這個對象為nil,我們稱它為“空對象”。(注意:我們這里強調的是“空對象”, 下面我們會拿他和“職位空的對象”左對比)!!
所以對于這種空對象,所有關于retain的操作都會引起程序崩潰,例如字典添加鍵值或數組添加新元素等等;
二、NSNull
NSNull和nil的區別在于,nil是一個空對象,已經完全從內存中消失了,而如果我們想表達“我們需要有這樣一個容器,但這個容器里什么也沒有”的觀念時,我們就用到NSNull,我稱它為“值為空的對象”。如果你查閱開發文檔你會發現NSNull這個類是繼承NSObject,并且只有一個“+ (NSNull *) null;”類方法。這就說明NSNull對象擁有一個有效的內存地址,所以在程序中對它的任何引用都是不會導致程序崩潰的。
三、Nil
nil和Nil在使用上是沒有嚴格限定的,也就是說凡是使用nil的地方都可以用Nil來代替,反之亦然。只不過從編程人員的規約中我們約定俗成地將nil表示一個空對象,Nil表示一個空類。參考代碼如下:
nil、Nil、NULL和NSNull的理解
四、NULL
我們知道Object-C來源于C、支持于C,當然也有別于C。而NULL就是典型C語言的語法,它表示一個空指針,參考代碼如下:
int *ponit = NULL;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。