代码之家  ›  专栏  ›  技术社区  ›  erikprice

目标C中为空与为零

  •  178
  • erikprice  · 技术社区  · 16 年前

    observeValueForKeyPath:ofObject:change:context: -为什么文档使用 NULL 而不是 nil 当不指定上下文指针时?

    5 回复  |  直到 9 年前
        1
  •  224
  •   VisioN    12 年前

    nil 只应在 id ,我们Java和C++程序员认为是指向对象的指针。使用 NULL 对于非对象指针。

    查看该方法的声明:

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object
        change:(NSDictionary *)change context:(void *)context
    

    语境是 void * (即C型指针),所以你肯定会使用 无效的 (有时被宣布为 (void *)0 )而不是 (类型为 身份证件 )

        2
  •  64
  •   Marc Charbonneau    16 年前

    它们在技术上是相同的(0),但nil通常用于Objective-C对象类型,而null用于C样式指针(void*)。

        3
  •  52
  •   Andrew    15 年前

    它们在技术上是相同的,只是风格不同:

    • 客观C风格说 nil 是用于 id 类型(和指向对象的指针)。
    • C Style说 NULL 是你用来做的 void * .
    • C++风格通常说你应该只使用 0 .

    我通常使用与类型所在语言匹配的变体 宣布 .

        4
  •  12
  •   user2560622    11 年前

    NULL C equivalent 属于 nil ,指向无内容的指针;

    哪里 nil is zero typed as id ,

    NULL is zero typed as void* .

    一个重要点 您可以将消息发送到空。因此,在许多地方,在目标C中最好使用nil。

        5
  •  3
  •   dan14941    9 年前

    除了,

    nil 使用的是Objective-C样式。 哪里 NULL 用于C类型指针,并键入 (void *) .