原 關於nil的幾點認識,居然都現在才發現

2021-09-22 09:18:33 字數 806 閱讀 1048

所以現在看幾個sample:

nsarray * array =[nsarray array];

if (array !=nil)

//not nil

nsarray *array2 =[nsarray array];

if ([array2 isequal:nil] ==no)

//not nil

nsarray * array3 =[[nsarray alloc] init];

if (array3 !=nil)

//not nil

[array3 release];

nsstring *str;

if (str !=nil)

nsstring *str2;

if([str2 isequal:nil] == no)

上面的例子所有的結果都是「is not nil」。我的分析是,array == nil判斷的是array的位址是否為空,也就是系統有沒有分配給array記憶體。顯然,已經經過[nsarray array]或者[[nsarray] array]了,自然就有了記憶體位址。如果懷疑array物件與普通的string物件可能會有區別,那就看最後兩個例子。str以及str2都沒有顯式地分配記憶體,但是位址依舊不為空。

所以,我們得出乙個結論,以後想判斷乙個物件是否為空一定要謹慎,不能簡簡單單地「*** !=  nil「就搞定了。比如,若想判斷array等是否含有內容,就應該用,if([array count] != 0)而不是用 if(array != nil)或者if([array isequal:nil])來判斷。

關於STRUCT的幾點認識

1.struct 的巨大作用 面對乙個人的大型 c c 程式時,只看其對struct 的使用情況我們就可以對其編寫者的程式設計經 驗進行評估。因為乙個大型的c c 程式,勢必要涉及一些 甚至大量 進行資料組合的結構體,這些結 構體可以將原本意義屬於乙個整體的資料組合在一起。從某種程度上來說,會不會用...

關於C C 的幾點認識

從學習c語言開始,已經接觸這門語言好幾年了,不敢說有多精通,本文就本人以往遇到過的幾個問題做乙個說明。1 認識c語言的安全隱患。首先,我們來看乙個簡單的例子。int ndata 50 char szbuf 20 memset szbuf,0,20 strcpy szbuf,const char nd...

關於閉包的幾點認識

什麼是閉包?閉包一般人都說,是函式中定義的乙個函式,有的人也說函式中套函式。其實準確點說,閉包是乙個能夠訪問到其他函式內部變數的函式,當然這個其他函式不是父子關係的函式,而是兄弟關係的函式。舉個最簡單的例子引導一下 function alwayslinger console.log num num ...