美文网首页
OC中id和void*的区别

OC中id和void*的区别

作者: mnz12138 | 来源:发表于2018-01-13 15:34 被阅读0次

id和void *并非完全一样。

void *是C语言中常用的。

id类型用于隐藏对象类型的类名部分,相当于C语言中的“void *”。但是id本身就是一个指针,而且可以指向任何一个继承了Object(或者NSObject)类的对象。所以需要注意的是:id是一个指针,所以你在使用id的时候不需要加星号。比如id foo=nil定义了一个nil指针,这个指针指向NSObject的一个任意子类。而id *foo=nil则定义了一个指针,这个指针指向另一个指针,被指向的这个指针指向NSObject的一个子类。

比如id person和void* personV,[person print]是可以的,但是[personV print]在编译的时候就会报错。因为ObjeciveC的编译器看到id,会假定它可以接受任何message,虽然在runtime时可能并不是这样的,但personV并不是Objective C类型,编译器就会报错,但是void *有可能是可以接收print message的。

相关文章

  • OC中id和void*的区别

    id和void *并非完全一样。 void *是C语言中常用的。 id类型用于隐藏对象类型的类名部分,相当于C语言...

  • nil Nil NULL NSNull kCFNull的区别

    字面零值的解释 id 和 void * 的区别

  • oc中instancetype和id的区别

    相同点:instanceType和id都是作为方法的返回类型而被使用。 不同点: 1.instancetype可以...

  • OC中instancetype和id的区别

    1. 相同点 都可以作为方法的返回类型,省去具体类型,提高代码的通用性。 2. 不同点 instancetype会...

  • OC中id和NSObject *的区别

    id是一个指针。NSObject *是NSObject类型的指针。Objective-C中并非所有的类都继承自NS...

  • 知识汇总

    OC中instancetype与id的区别 区别1: 在ARC(Auto Reference Count)环境下:...

  • IOS中的void*和id

    先说说void void func1(void)void func2(void)前者表明,此函数没有参数,也没有返...

  • id 和void *

    1. 指针类型 id是指向Objective-C对象的指针。 void *是任何东西的指针(无类型指针)。是“对...

  • runtime---strong实现

    OC中strong修饰一个对象,实际上是调用了void objc_storeStrong(id *location...

  • NULL & nil & Nil & N

    NULL :C指针的字面零值((void *)0) nil:oc对象的字面零值((id)0) Nil:oc类的字面...

网友评论

      本文标题:OC中id和void*的区别

      本文链接:https://www.haomeiwen.com/subject/ecvcoxtx.html