iOS中nil、Nil、NULL、NSNull详解

2016-02-19 11:32 5 1 收藏

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

【 tulaoshi.com - 编程语言 】

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 是差不多的,值相同:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)
// objc.h#ifndef Nil# if __has_feature(cxx_nullptr)#  define Nil nullptr# else#  define Nil __DARWIN_NULL# endif#endif

NULL

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

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

定义:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)
// in stddef.h #define NULL ((void*)0)

NSNull

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 的值相同,理解它们之间的书面意义才重要,让代码更加明确,增加可读性。

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

来源:https://www.tulaoshi.com/n/20160219/1597810.html

延伸阅读
实现UItableview控件数据刷新 一、项目文件结构和plist文件 二、实现效果 1.说明:这是一个英雄展示界面,点击选中行,可以修改改行英雄的名称(完成数据刷新的操作). 运行界面: 点击选中行: 修改数据后自动刷新: 三、代码示例 数据模型部分: YYheros.h文件 代码如下: // //  YYheros.h //  10-英...
UIEvent是一系列UITouch的集合,在IOS中负责响应触摸事件。另外还提到了响应者链的概念,在IOS中,所有事件有一个最先响应者,事件可以沿着响应者链向下传递。 接下来是UIControl对象 UIControl是UIView的子类,当然也是UIResponder的子类。UIControl是诸如UIButton、UISwitch、UITextField等控件的父类,它本身也包含了一些属性和方法,但...
在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办? 1、MSSQL: ISNULL() 语法 ISNULL ( check_expression , replacement_value ) 参数 check_expression 将被检查是否为 NULL的表达式。check_expression 可以是任何类型的。 replacement_value 在 check_expression 为 NULL时将...
iOS沙盒机制  iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被成为沙盒,所以所有的非代码文件都要保存在此,例如图像,图标,声音,映像,属性列表,文本文件等。 每个应用程序都有自己的存储空间 应用程序不能翻过自己的围墙去访问别的存储空间的内容 打开模拟器沙盒目录 方法1、可以设置...
标签: Web开发
 if语句的代码的语法非常简单,就是一个 if 判断语句来判断浏览器的类型和版本,使用类似 !--[if lte IE 6] 和 ![endif]-- 语法结构包含起来,代表如果浏览器是 IE 并且版本号低于或等于 6.0 则进行提示。类似的语法还有: !--[if IE] 这样使用IE浏览器(全部版本)的人都看得到。 ![endif]-- !--[if IE 6] 这样IE 6.0版本会看得到,只...

经验教程

760

收藏

20
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部