iOS中nil、Nil、NULL、NSNull详解

Yu哥33

Yu哥33

2016-02-19 11:32

今天给大家分享的是由图老师小编精心为您推荐的iOS中nil、Nil、NULL、NSNull详解,喜欢的朋友可以分享一下,也算是给小编一份支持,大家都不容易啊!

ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质。

nil

nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interface 声明的 ObjC 对象。
例如:

NSString *someString = nil;NSURL *someURL = nil;id someObject = nil;if (anotherObject == nil) // do something

定义:

// objc.h#ifndef nil# if __has_feature(cxx_nullptr)#  define nil nullptr# else#  define nil __DARWIN_NULL# endif#endif // __DARWIN_NULL in _types.h #define __DARWIN_NULL ((void *)0)

Nil

Nil 是 ObjC 类类型的书面空值,对应 Class 类型对象。
例如:

Class someClass = Nil;
Class anotherClass = [NSString class];
定义声明和 nil 是差不多的,值相同:

// objc.h#ifndef Nil# if __has_feature(cxx_nullptr)#  define Nil nullptr# else#  define Nil __DARWIN_NULL# endif#endif

NULL

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

NULL 是任意的 C 指针空值。
例如:

int *pointerToInt = NULL;char *pointerToChar = NULL;struct TreeNode *rootNode = NULL;

定义:

// in stddef.h #define NULL ((void*)0)

NSNull

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

NSNull 是一个代表空值的类,是一个 ObjC 对象。实际上它只有一个单例方法:+[NSNull null],一般用于表示集合中值为空的对象。
例子说明:

// 因为 nil 被用来用为集合结束的标志,所以 nil 不能存储在 Foundation 集合里。
NSArray *array = [NSArray arrayWithObjects:@"one", @"two", nil];
// 错误的使用
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:nil forKey:@"someKey"];
// 正确的使用
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
[dict setObject:[NSNull null] forKey:@"someKey"];
定义:

/* NSNull.h  Copyright (c) 1994-2012, Apple Inc. All rights reserved.*/#import Foundation/NSObject.h@interface NSNull : NSObject NSCopying, NSSecureCoding+ (NSNull *)null;@end

小结

虽然 nil, Nil, NULL 的值相同,理解它们之间的书面意义才重要,让代码更加明确,增加可读性。

以上所述就是本文的全部内容了,希望大家能够喜欢。

展开更多 50%)
分享

猜你喜欢

iOS中nil、Nil、NULL、NSNull详解

编程语言 网络编程
iOS中nil、Nil、NULL、NSNull详解

iOS中json解析出现的null,nil,NSNumber的解决办法

编程语言 网络编程
iOS中json解析出现的null,nil,NSNumber的解决办法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

详解iOS设计中的UIWindow使用

编程语言 网络编程
详解iOS设计中的UIWindow使用

iOS开发中UIPopoverController的使用详解

编程语言 网络编程
iOS开发中UIPopoverController的使用详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

详解iOS开发中Keychain的相关使用

编程语言 网络编程
详解iOS开发中Keychain的相关使用

SQL语句查询是否为空 =null及null

编程语言 网络编程
SQL语句查询是否为空 =null及null

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

rails制作rss feed代码

rails制作rss feed代码

Win8.1系统下使用Xbox Music的技巧

Win8.1系统下使用Xbox Music的技巧
下拉加载更多内容 ↓