服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - IOS 基础之nil,NULL,NSNULL区别详解

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

2021-03-13 16:37iOS开发网 IOS

这篇文章主要介绍了IOS 基础之nil,NULL,NSNULL区别详解的相关资料,需要的朋友可以参考下

IOS 基础之nilNULLNSNULL区别详解

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

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

延伸 · 阅读

精彩推荐
  • IOSiOS10 Xcode8适配7个常见问题汇总

    iOS10 Xcode8适配7个常见问题汇总

    这篇文章主要为大家详细汇总了iOS10 Xcode8适配7个常见问题,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    索马里猫10332021-02-01
  • IOSiOS中时间与时间戳的相互转化实例代码

    iOS中时间与时间戳的相互转化实例代码

    这篇文章主要介绍了iOS中时间与时间戳的相互转化实例代码,非常具有实用价值,需要的朋友可以参考下。...

    张无忌!4812021-03-09
  • IOSiOS APP实现微信H5支付示例总结

    iOS APP实现微信H5支付示例总结

    这篇文章主要介绍了iOS APP实现微信H5支付示例总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    一张小A11332021-06-01
  • IOS谈一谈iOS单例模式

    谈一谈iOS单例模式

    这篇文章主要和大家谈一谈iOS中的单例模式,单例模式是一种常用的软件设计模式,想要深入了解iOS单例模式的朋友可以参考一下...

    彭盛凇11872021-01-19
  • IOSiOS常见的几个修饰词深入讲解

    iOS常见的几个修饰词深入讲解

    这篇文章主要给大家介绍了关于iOS常见的几个修饰词的相关资料,iOS修饰词包括assign、weak、strong、retain、copy、nonatomic、atomic、readonly、readwrite,文中通过示...

    郡王丶千夜7422021-05-10
  • IOSxcode8提交ipa失败无法构建版本问题的解决方案

    xcode8提交ipa失败无法构建版本问题的解决方案

    xcode升级到xcode8后发现构建不了新的版本。怎么解决呢?下面小编给大家带来了xcode8提交ipa失败无法构建版本问题的解决方案,非常不错,一起看看吧...

    Cinna丶7542021-02-03
  • IOSIOS网络请求之AFNetWorking 3.x 使用详情

    IOS网络请求之AFNetWorking 3.x 使用详情

    本篇文章主要介绍了IOS网络请求之AFNetWorking 3.x 使用详情,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    总李写代码6892021-03-04
  • IOSiOS逆向教程之logify跟踪方法的调用

    iOS逆向教程之logify跟踪方法的调用

    这篇文章主要给大家介绍了关于iOS逆向教程之logify跟踪方法调用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学...

    Mr.Guo11472021-04-28