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

 更新时间:2017年04月13日 17:08:46   投稿:lqh  
这篇文章主要介绍了IOS 基础之nil,NULL,NSNULL区别详解的相关资料,需要的朋友可以参考下

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 对象赋空值

例如

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

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

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中的内容

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

相关文章

  • IOS Xcode调试常用命令和断点整理

    IOS Xcode调试常用命令和断点整理

    这篇文章主要介绍了IOS Xcode调试常用命令和断点整理的相关资料,这里对IOS Xcode调试常用命令进行了总结,需要的朋友可以参考下
    2016-12-12
  • ios8 UITableView设置 setSeparatorInset UIEdgeInsetsZero不起作用的解决办法(去掉15px空白间距)

    ios8 UITableView设置 setSeparatorInset UIEdgeInsetsZero不起作用的解决

    这篇文章主要介绍了ios8 UITableView设置 setSeparatorInset UIEdgeInsetsZero不起作用的解决办法(去掉15px空白间距)的相关资料,需要的朋友可以参考下
    2016-02-02
  • IOS代码笔记之左右滑动效果

    IOS代码笔记之左右滑动效果

    这篇文章主要为大家详细介绍了IOS代码笔记之左右滑动效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • iOS实现毛玻璃效果(无需要第三方)

    iOS实现毛玻璃效果(无需要第三方)

    这篇文章主要为大家详细介绍了iOS实现毛玻璃效果,无需要第三方,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • IOS实现选择城市后跳转Tabbar效果

    IOS实现选择城市后跳转Tabbar效果

    这篇文章主要为大家详细介绍了IOS实现选择城市后跳转Tabbar效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • 代码详解iOS视频直播弹幕功能

    代码详解iOS视频直播弹幕功能

    本篇文章通过原理分析和代码实例讲述了实现iOS视频直播弹幕功能的方法,需要的朋友参考学习下吧。
    2017-12-12
  • iOS NSThread和NSOperation的基本使用详解

    iOS NSThread和NSOperation的基本使用详解

    下面小编就为大家分享一篇iOS NSThread和NSOperation的基本使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • iOS UIBezierPath实现饼状图

    iOS UIBezierPath实现饼状图

    这篇文章主要为大家详细介绍了iOS UIBezierPath实现饼状图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • iOS读写json文件的方法示例

    iOS读写json文件的方法示例

    这篇文章主要给大家介绍了关于iOS读写json文件的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • iOS指纹验证TouchID应用学习教程

    iOS指纹验证TouchID应用学习教程

    这篇文章主要为大家详细iOS指纹验证TouchID应用学习教程的第一篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论