nil,Nil,NULL,NSNull的区别
来源:互联网 发布:网络摄像头芯片方案 编辑:程序博客网 时间:2024/05/15 04:27
在iOS平台里,出现过nil ,Nil ,NULL, NSNull 的区别
Nil: 在系统的定义里:
#ifndef Nil
# if __has_feature(cxx_nullptr)
# define Nil nullptr
# else
# define Nil __DARWIN_NULL
# endif
#endif
实际在Objective-C语言里__DARWIN_NULL的定义是 #define __DARWIN_NULL ((void *)0)
结论:Nil的本质也是 ((void *)0)
nil: 在系统的定义里:
#ifndef nil
# if __has_feature(cxx_nullptr)
# define nil nullptr
# else
# define nil __DARWIN_NULL
# endif
#endif
NSNull:本质上就Objective-C的一个类。其定义:
@interface NSNull : NSObject <NSCopying, NSSecureCoding>
+ (NSNull *)null;
@end
NULL 用于表示C语言指针中的空值。
nil 用于表示Objective-C语言里对象的空值。
Nil 用于表示Objective-C语言类类型(Class)值为空的情况。
总结:不管是NULL 、Nil 、nil它们的本质都是一样的((void*)0),只是写法不同, 这样做意义是为了区分不同的数据类型,增强代码的可读性。举个例子:当你一看到一个变量赋值为NULL,实际上一下子就能明白, 这个变量是C语言里定义的指针类型。当看到nil的时候, 就能知道这个变量是Objective-C的对象指针。。。
0 0
- 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,NULL,Nil,NSNull的区别
- nil/Nil/NULL/NSNull的区别
- NSNull nil NULL Nil的区别
- nil/Nil/NULL/NSNull的区别
- 类型转化LPCTSTR,std::string,VT_BSTR
- Ant Counting(3046)
- adb通过IP地址连接远端的模拟器
- Troubleshooting Common Networking Problems with Wireshark, Pt. 2: TCP Retransmissions
- Python xml属性/节点/文本的增删改[xml.etree.ElementTree]
- nil,Nil,NULL,NSNull的区别
- [LeetCode]Insert Interval 考虑多种情况
- 在Ubuntu上安装ADT的遭遇
- Facebook Bigdata - Presto 0.80 版本说明
- 关于测试人员的职业发展
- 微信开发 分享朋友圈或好友代码
- libevent源码深度剖析一
- 24岁转行开发之心得--第一季
- The Definitive C++ Book Guide and List