IOS中的void*和id

先说说void

void func1(void)
void func2(void
前者表明,此函数没有参数,也没有返回值。
后者表明,此函数有参数,且参数是指向任意类型的指针。此函数有返回值,且返回值是指向任意类型的指针。

void*和id的区别

void *在C语言中常用,并不是OC对象
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的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 1,788评论 0 9
  • 一般情况下,降低理财难度,说几个大家能过简单理解的方式,节约理财精力的方式主要分三种: 第一种是圈定资产配比范围,...
    乾坤30阅读 269评论 0 0
  • 5月27日,阳城应朝铁厂曾经的男女篮球运动员,在当年球队队长白家德的带领下,来到了应朝铁厂。 应朝铁厂全体人员对他...
    刘爱国阅读 1,284评论 0 7
  • 也许我拿不到高薪,也许我买不起房,也许我这一辈也不可能功成名就,但我一个人闯过的路,遇到的人,读过的书,看到的风景...
    苍穹之下小人儿阅读 900评论 1 20
  • 一直都知道、明白我们不可能、 虽然我们互相喜欢着、但只是喜欢? 最近、总是压抑着自己对你的那份感情 想慢慢的淡忘、...
    灰蒙蒙阅读 171评论 0 1