nil,Nil,NULL,NSNull的区别

在iOS平台里,出现过nil ,Nil ,NULL, NSNull 的区别


 NULL:定义在#include <stddef.h>  #define NULL (void*)0  所以NULL的本质就是((void*)0)
 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值