溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Nil,nil,NSNULL,NULL的區(qū)別

發(fā)布時(shí)間:2020-07-18 09:13:02 來源:網(wǎng)絡(luò) 閱讀:516 作者:Im劉亞芳 欄目:開發(fā)技術(shù)

一、nil

    我們給對象賦值時(shí)候,一般會使用object = nil  標(biāo)示我向吧這個(gè)對象釋放掉:

    或者對象由于某種原因,經(jīng)過多次release,于是對象引用計(jì)數(shù)器為0了,系統(tǒng)將這塊內(nèi)存釋放掉,這個(gè)時(shí)候這個(gè)對象為nil,我們稱它為“空對象”。(注意:我們這里強(qiáng)調(diào)的是“空對象”, 下面我們會拿他和“職位空的對象”左對比)??!

    所以對于這種空對象,所有關(guān)于retain的操作都會引起程序崩潰,例如字典添加鍵值或數(shù)組添加新元素等等;

二、NSNull

    NSNull和nil的區(qū)別在于,nil是一個(gè)空對象,已經(jīng)完全從內(nèi)存中消失了,而如果我們想表達(dá)“我們需要有這樣一個(gè)容器,但這個(gè)容器里什么也沒有”的觀念時(shí),我們就用到NSNull,我稱它為“值為空的對象”。如果你查閱開發(fā)文檔你會發(fā)現(xiàn)NSNull這個(gè)類是繼承NSObject,并且只有一個(gè)“+ (NSNull *) null;”類方法。這就說明NSNull對象擁有一個(gè)有效的內(nèi)存地址,所以在程序中對它的任何引用都是不會導(dǎo)致程序崩潰的。

三、Nil

    nil和Nil在使用上是沒有嚴(yán)格限定的,也就是說凡是使用nil的地方都可以用Nil來代替,反之亦然。只不過從編程人員的規(guī)約中我們約定俗成地將nil表示一個(gè)空對象,Nil表示一個(gè)空類。參考代碼如下:

nil、Nil、NULL和NSNull的理解

四、NULL

    我們知道Object-C來源于C、支持于C,當(dāng)然也有別于C。而NULL就是典型C語言的語法,它表示一個(gè)空指針,參考代碼如下:

    int *ponit = NULL;



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI