iOS 中nil,Nil,NULL,NSNull的区别

类与对象的概念

类是对同一类事物高度的抽象,类中定义了这一类对象所应具有的静态属性(属性)和动态属性(方法)。

对象是类的一个实例,是一个具体的事物。

类与对象是抽象与具体的关系。

类其实就是一种数据类型,它的变量就是对象。

nil、Nil、NULL、NSNull的区别

nil:指向一个对象的空指针 Nil:指向一个类的空指针 NULL:指向其他类型(如:基本类型、C类型)的空指针 NSNull:通常表示集合中的空值

举例:

NSURL *url = nil; Class class = Nil; int *pointerInt = NULL; NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], [NSNull null], [[NSObject alloc] init], [[NSObject alloc] init], nil];

为什么上面的array里面的空对象不直接用nil?

如果用nil,就会变成NSArray *array = [NSArray arrayWithObjects:[[NSObject alloc] init], nil,  [[NSObject alloc] init], [[NSObject alloc] init], nil];,那么数组到第二个位置就会结束。打印[array count]的话会显示1而不是4 所以[NSNull null]通常可以作为一个数组的占位符,从而是数组的count计算准确

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Phoenix的Android之旅

Java中的四舍五入

大概在小学的时候我们就学过四舍五入, 不过在编程语言中这个概念跟我们所熟悉的算法有点出入。 如果面试中考察你对Math.round()的用法,不知道能不能准确答...

16120
来自专栏java学习

重要通知!小编出新的Java练习题已经公布答案了!!!

一、选择题和问答题 1、在一个java原文件中,import, class, package语句的顺序是(D)。 A. import classpackage ...

43280
来自专栏Python

python2/3中 将base64数据写成图片,并将图片数据转为16进制数据的方法、bytes/string的区别

python 3中最重要的新特性可能就是将文本(text)和二进制数据做了更清晰的区分。文本总是用unicode进行编码,以str类型表示;而二进制数据以byt...

46920
来自专栏python学习指南

Scala入门学习笔记三--数组使用

前言 本篇主要讲Scala的Array、BufferArray、List,更多教程请参考:Scala教程 本篇知识点概括 若长度固定则使用Array,若...

267100
来自专栏大数据钻研

44 个 JavaScript 变态题解析

当初笔者做这套题的时候不仅怀疑智商, 连人生都开始怀疑了…. 不过, 对于基础知识的理解是深入编程的前提. 让我们一起来看看这些变态题到底变态不变态吧! 第1题...

35560
来自专栏我的博客

Objcetive-c基础知识

Foundation Kit基础知识 1.范围作用 NSRange typedef struct _NSRange { unsigned int loca...

272100
来自专栏noteless

[七]基础数据类型之Float详解

Float 依然提供了根据基本类型float以及float的String形式构造

42410
来自专栏Objective-C

OC 对象的分类

29370
来自专栏谈补锅

iOS之属性修饰符 retain、strong和copy区别测试

时不时会有点迷惑属性修饰符retain、strong、copy三者之间的区别,还是把测试过程记录下来好一点!

19230
来自专栏机器学习入门

挑战程序竞赛系列(75):4.3强连通分量分解(2)

挑战程序竞赛系列(75):4.3强连通分量分解(2) 传送门:POJ 3180: The Cow Prom 题意: 求结点大于等于2的强连通分量个数。 直接上...

21160

扫码关注云+社区

领取腾讯云代金券