浅谈iOS 中 nil、Nil、null以及NSNull的区别

来源:互联网 发布:中国 发达国家 知乎 编辑:程序博客网 时间:2024/05/28 15:22


以下代码是直接在工程中验证的,所以可以直接粘贴到工程中查看运行结果。

关于null的用法还不是太明确,欢迎交流。


//******************nil  Nil  null  NSNull**************

    

    NSDictionary* dic = @{@"key":@"value"};

    

    NSString* string = dic[@"key2"];

    

    

    int i = (int)dic[@"key2"];

    

    

    //return : (string:(null),int:0)  int 类型的nil 0

    NSLog(@"string:%@,int:%d",string,i);

    

    //Nil一个类的空指针   nil一个实例或变量的空指针  null可以看做是基本数据类型为空

    if (string == Nil && string == nil) {//执行

        

        NSLog(@"nil,Nil");

    }

    

    string = nil;

    

    //nil发消息不会crash

    [string substringFromIndex:0];

    

    NSLog(@"string == nil后:%@",string);

    

    if (i ==0 ) {//执行 i == nil是错误的语法

        NSLog(@"0");

    }

    

    //NSNull  通常作为占位符

    NSObject* obj = [NSNull null];

    

    NSArray *array = [NSArray arrayWithObjects:@"One", @"TWO", obj,@"three",nil];


    NSLog(@"arr object:%@",array);

    

    for (id subArray  in array) {

        if (subArray != [NSNull null]) {

            NSLog(@"arr object2:%@",subArray);

        }

    }

    



0 0