国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS中nil,Nil,NULL之間的區別

2019-11-14 18:20:20
字體:
來源:轉載
供稿:網友

1、說明

nil:指向oc中對象的空指針

Nil:指向oc中類的空指針

NULL:指向其他類型的空指針,如一個c類型的內存指針

NSNull:在集合對象中,表示空值的對象

 

若obj為nil:

[obj message]將返回NO,而不是NSException

 

若obj為NSNull:

[obj message]將拋出異常NSException

 

2、用法

nil和NULL從字面意思來理解比較簡單,nil是一個對象,而NULL是一個值,我的理解為nil是將對象設置為空,而NULL是將基本類型設置為空的。而且我們對于nil調用方法,不會產生crash或者拋出異常。

NSURL *url = nil;Class class = Nil;int *pointerInt = NULL;

nil是一個對象指針為空,Nil是一個類指針為空,NULL是基本數據類型為空。

這五個概念很容易混淆,在一些場合下他們具有同樣的用法。首先解釋一下“空指針”意思,空指針是指該指針未指向一塊有意義的內存區。如int *p; int *p = NULL;

NSObject *obj1 = [[NSObject alloc] init];NSObject *obj2 = [NSNull null];NSObject *obj3 = [NSObject new];NSObject *obj4;NSArray *arr1 = [NSArray arrayWithObjects:obj1, obj2, obj3, obj4, nil];NSLog(@"arr1 count: %ld", [arr1 count]); //count: 3 因為obj=nil,在加入obj4時就結束添加對象 NSObject *obj1;NSObject *obj2 = [[NSObject alloc] init];NSObject *obj3 = [NSNull null];NSObject *obj4 = [NSObject new];NSArray *arr2 = [NSArray arrayWithObjects:obj1, obj2, obj3, obj4, nil];NSLog(@"arr2 count: %ld", [arr2 count]); //count: 0,因為obj1=nil,所以后面的對象沒有添加進去

  

[NSNull null]通常作為占位符作用,如下:

NSObject *obj1 = [NSNull null];NSArray *arr1 = [NSArray arrayWithObjects:@"One", @"TWO", obj1,@"three",nil];for (NSString *str in arr1) {   NSLog(@"array object: %@", str); } //result:One、Two、、three NSObject *obj1 = [NSNull null];NSArray *arr1 = [NSArray arrayWithObjects:@"One", @"TWO", obj1,@"three",nil];for (NSString *str in arr1) {  if (str != [NSNull null]){     NSLog(@"array object: %@", str);  }}

  

最后個人小站推薦:http://www.iosask.com 大家一起溝通學習。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴林左旗| 宜章县| 葵青区| 兴仁县| 明星| 稷山县| 红原县| 巴青县| 广灵县| 右玉县| 静安区| 虹口区| 灌南县| 鸡东县| 乌拉特中旗| 马山县| 安陆市| 葫芦岛市| 阳高县| 普兰县| 彰化县| 栾川县| 贡觉县| 轮台县| 昭苏县| 府谷县| 呼伦贝尔市| 剑阁县| 乾安县| 高平市| 马龙县| 邵武市| 孙吴县| 陇南市| 赣榆县| 武夷山市| 武川县| 山阴县| 黄浦区| 东港市| 都兰县|