【问题标题】:What's the difference between void* and id? [duplicate]void* 和 id 有什么区别? [复制]
【发布时间】:2011-04-25 01:19:48
【问题描述】:
【问题讨论】:
标签:
iphone
objective-c
ipad
【解决方案1】:
我认为您问的不仅仅是 id 和 void* 之间的区别。您似乎在问为什么在这种情况下它是 void*。
这是 void* 因为这是您的指针。没有人,但你会使用它。该指针将不会被保留或以其他方式使用。当动画调用你的回调方法时,它会原封不动地返回这个指针给你。你用它做什么取决于你放在上下文中:首先。
成为一个空虚*可以让你做很多事情。你可以传入一个标准的objective-c对象。您可以传递一个简单的 C 风格数据结构。你可以传入一个函数指针。你可以传递 nil 而什么也不做。
【解决方案2】:
它允许你传递一个指向你喜欢的任何东西的指针。可以是 obj-c 对象、指向某个数组的指针、结构等等。 void * 类型只是最通用的“随便什么”类型。
如果您只是通过 nil,请不要担心。如果它让你感觉更好,你可以传递 NULL。
【解决方案3】:
id 是一个指向具有isa 指针的结构的指针(它向ObjectiveC 运行时表示这个“事物”是对象)。 void* 只是一个指向可能任何东西的指针(可能是另一个 id)。