美文网首页iOS知识点
nil - Nil- Null - NSNull的区别

nil - Nil- Null - NSNull的区别

作者: RadioWaves | 来源:发表于2015-09-09 23:34 被阅读249次

    今天去面试看到了关于这几个的区别,由于没有接触多久,对4个属性页有点陌生,回来后详细查阅了资料,得出以下的结论:

    本质上来说nil,Nil,NULL和NSNull的值一样的,都为空,
    虽然 nil, Nil, NULL和NSNull的值相同,
    但是理解它们之间的书面意义才重要,
    让代码更加明确,增加可读性。

    nil 是给一个对象赋值为空,对应 id 类型的对象,或用@interface 声明的 ObjC 对象
    原文:Nil -> Null-pointer to objective - c object
    
    例如:
    NSURL *url = nil;
    NSString *someString = nil;
    NSURL *someURL = nil;
    id anyObjC = nil;
    
    Nil 是 ObjC 类 类型的书面空值,对应 Class 类型对象
    原文:Nil -> Null-pointer to objective - c class
    
    例如:
    Class  class = Nil;
    Class anotherClass = [NSString class];
    
    NULL 是任意的 C 指针空值,也或者是基本数据类型为空
    null-> null pointer to primitive type or absence of data.
    
    例如:
    int *pointerInt = NULL;
    int *pointerToInt = NULL;
    char *pointerToChar = NULL;
    
    NSNull 是一个代表空值的类,是一个 ObjC 对象。 一般用于表示集合中值为空的对象。
    它只有一个单例方法:+[NSNull null];
    
    // 因为 nil 被用来作为集合结束的标志,所以 nil 不能存储在 Foundation 集合里。
    NSArray *array = [NSArray arrayWithObjects:@"one", @"two", nil];
    
    // 错误的使用
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    [dict setObject:nil forKey:@"someKey"];
    
    // 正确的使用
    NSMutableDictionary *dict = [NSMutableDictionary dictionary];
    [dict setObject:[NSNull null] forKey:@"someKey"];
    

    相关文章

      网友评论

      本文标题:nil - Nil- Null - NSNull的区别

      本文链接:https://www.haomeiwen.com/subject/lfrpcttx.html