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

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

iOS中nil,Nil,NULL的區別

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

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);

}

}//result:One、Two、three


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台北县| 云南省| 喀喇| 青川县| 廊坊市| 太和县| 邹平县| 吉木乃县| 清水县| 广灵县| 迁西县| 新疆| 沙洋县| 西充县| 长寿区| 博爱县| 桂阳县| 东至县| 苏州市| 武威市| 呼伦贝尔市| 阿合奇县| 洪雅县| 息烽县| 新营市| 西安市| 东丽区| 哈巴河县| 南和县| 苗栗市| 五指山市| 大冶市| 栾城县| 衡山县| 射阳县| 达州市| 吉木萨尔县| 宜宾市| 古浪县| 班戈县| 安顺市|