【问题标题】:Nil and nil - difference [duplicate]零和零 - 区别[重复]
【发布时间】:2013-11-29 15:06:58
【问题描述】:

nilNil 有什么区别? nil 是一个未初始化的对象,Nil 是什么?谢谢!

【问题讨论】:

标签: objective-c null


【解决方案1】:

这是Class 类型的零值。

所有NULLnilNilNUL'\0'00L0U0.00.0f、...相同的值(至少在健全的系统上)。它们只是对应不同的类型。

为了明确一点:nil 不是“未初始化对象”,而是对象指针类型的(已初始化)变量的值。

【讨论】:

  • 谢谢! “您可以在 9 分钟内接受答案”。我会尽快接受你的回答!
  • Nil 来自NeXTSTEP,而不是来自俄罗斯。两人都见证了更好的时光。
  • @nicael 这是否暗示了我的可信度?
【解决方案2】:

nil 是一个未初始化的对象

不,不是。这是一个指向无处的对象的指针。未初始化的对象需要nil

Nil 是怎么回事

类似,但不是对象,而是仅用于类。 (由于类在 Objective-C 中对象,您也可以将 nil 用作 Class 类型的指针,但出于代码可读性的原因,不鼓励这样做。)

【讨论】:

    【解决方案3】:

    添加一点迂腐......

    nil 是一个值,表示指向有效非对象的指针。从 C 的角度来看,它是一个指向无处的指针。但是,它在 Objective-C 的上下文中具有特殊的含义。由于 Objective-C 是一种nil 吃消息的语言,将nil 分配给对象指针将使该对象指针在所有后续消息传递操作中有效地成为空操作。

    nil 的值被定义为 0,但是——从技术上讲——它不必用零位表示(尽管它实际上必须比较为零)。 Because standards.

    实际上,nil 将完全按照 Nikolai 的指示为 0。

    Nilnil 相同,但对于 H2C03 提到的 Class 对象引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-16
      • 2016-11-26
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      相关资源
      最近更新 更多