美文网首页
2019-11-07 15:31IOS 基础之nil,NULL,

2019-11-07 15:31IOS 基础之nil,NULL,

作者: footSInRoad | 来源:发表于2019-11-07 15:32 被阅读0次

    原地址:https://www.jb51.net/article/111137.htm

    iOS 基础之nil,NULL,NSNULL区别详解

    ① nil:一般赋值给空对象。

    ② NULL:NULL 是一个通用指针(泛型指针)。

    一般赋值给 nil 之外的其他空值。如SEL等。

    ③ NSNULL:[NSNull null] 是一个对象,他用在不能使用 nil 的场合。

    因为在 NSArray 和 NSDictionary 中 nil 有特殊的含义(表示列表结束),所以不能在集合中放入 nil 值。如要确实需要存储一个表示“什么都没有”的值,可以使用 NSNull 类。NSNull只有一个方法:

    + (NSNull *) null;

    ④ 当向 nil 发送消息时,返回 NO,不会有异常,程序将继续执行下去。

    而向 NSNull 的对象发送消息时会收到异常。

    实例:

    nil 是对objective c id 对象赋空值

    例如

    ?

    1

    2

    NSString * string = [NSString stringWithFormat:@"test"];

      string = nil;

    对于objective c 集合类对象 比如数组对象,字典对象,当我们不需要再使用他们的时候,对他们release 的同时最好也把他们赋值为nil,这样确保安全性,下面一个简单的一个例子:如果不赋值nil,可能导致程序崩溃

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    NSArray * array = [NSArray arrayWithObjects:@"test",@"test1",nil];

      [array release];

      if(array)

      {

        //仅仅对数组release,并没有赋空值的话,在程序某个地方如果继续对数组操纵,程序直接崩溃

        NSString * string = [array objectAtIndex:0];

        NSLog(@"%@",string);

      }

    编程的时候对集合类对象先赋值为nil,再将其release这样可以保证程序安全性,苹果官方例子中也看到过viewDidUnload把对象赋值nil,然后在dealloc方法中将他们release,

    Nil: A null pointer to an Objective-C class.表示对类进行赋空值

    NULL: A null pointer to anything else,  is for C-style memory pointers. 用于对非对象指针赋空值,比如C指针

    NSNull 对于像NSArray这样的类型,nil或NULL不能做为加到其中的Object,如果定义了一个NSArray,为其分配了内存,又想设置其中的内容为空,则可以用[NSNULL null】返回的对象来初始化NSArray中的内容

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    相关文章

      网友评论

          本文标题:2019-11-07 15:31IOS 基础之nil,NULL,

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