nil、Nil和NSNull的理解 nil和null從字面意思來理解比較簡單,nil是一個對象,而NULL是一個值,我的理解為nil是將對象設置為空,而null是將基本類型設置為空的,個人感覺有點像屬性當中,基本類型分配為assign NSString類型一般分配copy,而對象一般用retai.....
nil、Nil和NSNull的理解
nil和null從字面意思來理解比較簡單,nil是一個對象,而NULL是一個值,我的理解為nil是將對象設置為空,而null是將基本類型設置為空的,個人感覺有點像屬性當中,基本類型分配為assign NSString類型一般分配copy,而對象一般用retain。而且我們對於nil調用方法,不會產生crash或者拋出異常。
nil -> Null-pointer to objective- c object
NIL -> Null-pointer to objective- c class
null-> null pointer to primitive type or absence of data.
用法
NSURL *url = nil;
Class class = Nil;
int *pointerInt = NULL;
引申
nil是一個對象指針為空,Nil是一個類指針為空,NULL是基本數據類型為空。這些可以理解為nil,Nil, NULL的區別吧。
NSNULL,NULL和nil在本質上應該是一樣的,NULL和nil其實就是0,但是在Objective-c中,對於像NSArray這樣的類型,nil或NULL不能做為加到其中的Object,如果定義了一個NSArray,為其分配了記憶體,又想設置其中的內容為空,則可以用[NSNULL null返回的對對象來初始化NSArray中的內容,我的感覺有點像C語言中malloc一個記憶體空間,然後用memset初始化這段空間里的值為0。