码迷,mamicode.com
首页 > 其他好文 > 详细

Object-C中各类空值的分析

时间:2015-06-03 00:44:24      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

Object-C中各类空值的分析

前言

初次接触Object-C时,经常会遇到这样的困惑,使用空值时,什么时候使用nil,什么时候使用NSNULL?而且似乎用NULL也可以,另外Object-c中还有一个Nil。这么多的空值表示容易让人迷惑,下面将能过逐一分析来理清楚这4者的区别。

NULL

NULL本质上是:(void*)0,即指向地址为0x0的指针,用于表示C指针中的空值。

nil

nil的本质上也是(void*)0,但它用于表示表示指向Objective-C中对象的指针的值为空。

Nil

本质上也是(void*)0,用于表示Objective-C类(Class)类型的变量值为空。

NSNull

类定义如下:

@interface NSNull : NSObject <NSCopying, NSSecureCoding>

+ (NSNull *)null;

@end

其中+ (NSNull *)null; 返回一个单例对象,其表示空值。定义NSNull是由于集合对象中不能有nil值,所以用NSNull类来代表在集合对象中的null 值。英文解释:NSNull is a class defines a singleton object used to represent null values in collection objects (which don't allow nil values).
[NSNull null]: The singleton instance of NSNull。

总结:从技术实现上来说,nil、NULL都是一样的。但是实际上这种定义能够增加代码的可读性。如果你给某人传递NULL值,那么某人就认为接收到的是C指针。如果是nil,那么认为接受的是一个对象。而Nil,则认为接受的是class。

参考

区分nil Nil NULL和NSNill(Objective C语言)
nil/Nil/NULL/NSNull的区别
http://stackoverflow.com/questions/5908936/difference-between-nil-nil-and-null-in-objective-c
What describes nil best? What's that really?

Object-C中各类空值的分析

标签:

原文地址:http://www.cnblogs.com/limaofuyuanzhang/p/4548013.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!