nil和null的區別

2021-07-04 08:52:38 字數 505 閱讀 3712

在objective-c裡,nil物件被設計來跟null空指標關聯的。他們的區別就是nil是乙個物件,而null只是乙個值。而且我們對於nil呼叫方法,不會產生crash或者丟擲異常。 這個技術被framework通過多種不同的方式使用。最主要的就是我們現在在呼叫方法之前根本無須去檢查這個物件是否是nil。假如我們調了nil物件的乙個有返回值的方法,那麼我們會得到乙個nil返回值。

我們可以通過nil物件讓我們的dealloc函式實現看上去更帥一點:

- (void) dealloc之所以可以這麼做是因為我們給把nil物件設給了乙個成員變數,setter就會retain nil物件(當然了這個時候nil物件啥事情也不會做)然後release舊的物件。這個方式來釋放物件其實更好,因為這樣做的話,成員變數連指向隨機資料的機會都沒有,而通過別的方式,出現指向隨機資料的情形機會不可避免。

注意到我們呼叫的self.var這樣的語法,這表示我們正在用setter,而且不會引起任何記憶體問題。假如我們直接去設值的話,就會有記憶體溢位:

nil和NULL的區別

nil 是對objective c id 物件賦空值 例如nsstring string nsstringstringwithformat test string nil 對於objective c 集合類物件 比如陣列物件,字典物件,當我們不需要再使用他們的時候,對他們release 的同時最好也...

nil和NULL的區別

只能作為指標變數的值.如果1個指標變數的值是null值代表.代表這個指標不指向記憶體中的任何1塊空間 null其實等價於0 null其實是1個巨集.就是0只能作為指標變數的值.代表這個指標變數不指向記憶體中的任何空間.nil其實也等價於0 也是1個巨集.就是0.所以,null和nil其實是一樣的 雖...

和null的區別

string str1 null str引用為空 string str2 str引用乙個空串 也就是null沒有分配空間,分配了空間,因此str1還不是乙個例項化的物件,而str2已經例項化。注意因為null不是物件,是物件。所以比較的時候必須是 if str1 null 和if str2.equa...