【问题标题】:What is the difference between a c style pointer and an id style object? [duplicate]c 样式指针和 id 样式对象有什么区别? [复制]
【发布时间】:2012-02-23 14:47:50
【问题描述】:

可能重复:
objective c difference between id and void *

在阅读 Foundation 框架中的 NSZone.h 时,我遇到了一条评论,其中提到“更像是 c 样式指针而不是 id 样式对象”。我意识到我不明白其中的区别。

c样式指针和id样式对象有什么区别?

【问题讨论】:

  • 在 10,000 英尺的高度上,idvoid* 指针非常相似。区别在于id是有类型的,但类型是“Objective-C对象”,一个非常大而且“糊状”的类别。
  • 对不起,我看错了文章。 :( 错误答案已删除。感谢您指出这一点,伙计们。本文供参考:unixjunkie.blogspot.com/2008/03/id-vs-nsobject-vs-id.html

标签: objective-c c object pointers


【解决方案1】:

C 指针可以指向任何东西 - 对象、结构、原始字节、字符串……

“id”指针指向一个 Objective-C 对象的实例。 'id' 是无类型的,因此它可以指向任何类的实例。输入了 NSObject* 之类的东西;你知道它指向的是什么类型的对象。

【讨论】:

    【解决方案2】:

    标题似乎专门讨论了 Objective-C 垃圾收集器如何处理事物。从malloc() 获得的通用指针不由收集器管理,而对象则由收集器管理。这条评论是在 NSMakeCollectable() 上的,这是一个在 CoreFoundation 样式的对象上启用 GC 的函数。

    【讨论】:

      猜你喜欢
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2018-11-01
      • 2010-10-10
      • 1970-01-01
      相关资源
      最近更新 更多