【发布时间】:2013-11-29 15:06:58
【问题描述】:
nil 和 Nil 有什么区别? nil 是一个未初始化的对象,Nil 是什么?谢谢!
【问题讨论】:
标签: objective-c null
nil 和 Nil 有什么区别? nil 是一个未初始化的对象,Nil 是什么?谢谢!
【问题讨论】:
标签: objective-c null
这是Class 类型的零值。
所有NULL、nil、Nil、NUL、'\0'、0、0L、0U、0.0、0.0f、...相同的值(至少在健全的系统上)。它们只是对应不同的类型。
为了明确一点:nil 不是“未初始化对象”,而是对象指针类型的(已初始化)变量的值。
【讨论】:
Nil 来自NeXTSTEP,而不是来自俄罗斯。两人都见证了更好的时光。
nil是一个未初始化的对象
不,不是。这是一个指向无处的对象的指针。未初始化的对象需要不是nil。
Nil是怎么回事
类似,但不是对象,而是仅用于类。 (由于类在 Objective-C 中是对象,您也可以将 nil 用作 Class 类型的指针,但出于代码可读性的原因,不鼓励这样做。)
【讨论】:
添加一点迂腐......
nil 是一个值,表示指向有效非对象的指针。从 C 的角度来看,它是一个指向无处的指针。但是,它在 Objective-C 的上下文中具有特殊的含义。由于 Objective-C 是一种nil 吃消息的语言,将nil 分配给对象指针将使该对象指针在所有后续消息传递操作中有效地成为空操作。
nil 的值被定义为 0,但是——从技术上讲——它不必用零位表示(尽管它实际上必须比较为零)。 Because standards.
实际上,nil 将完全按照 Nikolai 的指示为 0。
Nil 与 nil 相同,但对于 H2C03 提到的 Class 对象引用。
【讨论】: