nil、Nil、NULL和NSNull的区别
来源:互联网 发布:js 大数 错误 编辑:程序博客网 时间:2024/04/29 01:22
1. nil
我们给对象赋值时一般会使用object = nil,表示我想把这个对象释放掉;
或者对象由于某种原因,经过多次release,于是对象引用计数器为0了,系统将这块内存释放掉,这个时候这个对象为nil,我称它为“空对象”。(注意:我这里强调的是“空对象”,下面我会拿它和“值为空的对象”作对比!!!)
所以对于这种空对象,所有关于retain的操作都会引起程序崩溃,例如字典添加键值或数组添加新原素等,具体可参考如下代码:
2. NSNull
NSNull和nil的区别在于,nil是一个空对象,已经完全从内存中消失了,而如果我们想表达“我们需要有这样一个容器,但这个容器里什么也没有”的观念时,我们就用到NSNull,我称它为“值为空的对象”。如果你查阅开发文档你会发现NSNull这个类是继承NSObject,并且只有一个“+ (NSNull *) null;”类方法。这就说明NSNull对象拥有一个有效的内存地址,所以在程序中对它的任何引用都是不会导致程序崩溃的。参考代码如下:
3. Nil
nil和Nil在使用上是没有严格限定的,也就是说凡是使用nil的地方都可以用Nil来代替,反之亦然。只不过从编程人员的规约中我们约定俗成地将nil表示一个空对象,Nil表示一个空类。参考代码如下:
4. NULL
我们知道Object-C来源于C、支持于C,当然也有别于C。而NULL就是典型C语言的语法,它表示一个空指针,参考代码如下:
int *ponit = NULL;
0 0
- nil, Nil, NULL和NSNull的区别
- nil、Nil、NULL和NSNull的区别
- iOS之nil, Nil, NULL,null和NSNull的区别
- NIL、NIL、NULL和NSNULL区别
- nil、Nil、NULL和NSNull区别
- nil、Nil、NULL和NSNull区别
- nil、Nil、NULL和NSNull区别
- nil/Nil/NULL/NSNull的区别
- nil/Nil/NULL/NSNull的区别
- nil、Nil、NULL、NSNull 的区别
- nil/Nil/NULL/NSNull的区别
- nil/Nil/NULL/NSNull的区别
- Nil, nil, NULL, NSNull的一点区别
- nil,Nil,NULL,NSNull的区别
- nil Nil NULL NSNull 之间的区别
- nil Nil NULL NSNull 之间的区别
- nil/Nil/NULL/NSNull的区别
- nil,Nil,NULL,NSNULL之间的区别
- 提交app Store审核时,Missing 64-bit support问题的解决办法
- Android studio报错 Error retrieving parent for item: No resource found that matches the given name ...
- 软考与职称
- 第11章 模块
- android ViewPager滑动事件讲解
- nil、Nil、NULL和NSNull的区别
- MFC模拟点击其他程序的模态消息提示框的“确定”按钮
- fat32结构图
- DoTween 六:< 常用方法 —— 移动:通过锚点坐标渐变位置>
- 让浏览器不加载缓存CSS和JS的方法
- nodejs vim 配置
- 解决ld: warning: directory not found for option"已删除路径"警告
- eclipse中使用Jena解析本体文件
- hive 中的排序优化