美文网首页iOS
IOS中的void*和id

IOS中的void*和id

作者: pyboy | 来源:发表于2017-03-11 13:40 被阅读1149次

先说说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的。

相关文章

  • IOS中的void*和id

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

  • id 和void *

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

  • OC中id和void*的区别

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

  • iOS白话串2-void、void * 、id、NSObject

    1 void、void * 、id 1.1 void 和 void * 1.1.1 void 关键字表示“空类型”...

  • iOS - (void)setValue:(id)value f

    //联系人:石虎QQ:1224614774昵称:嗡嘛呢叭咪哄 一、概念 - (void)setValue:(id)...

  • iOS +(void)load和+(void)initiali

    对+(void)load和+(void)initialize进行总结 ; +(void)load详解;+(void...

  • layout

    iOS开发中,- (void)layoutSubviews{}方法及相关方法 - (void)layoutSubv...

  • iOS中的类和对象

    iOS中的类和对象 1.runtime里面声明了id和Class,简化得到以下 可以看到iOS中id代表了一个对象...

  • id类型和void *类型的转换

    在ARC无效时,我们可以进行如下所示的隐式强制转换: 但是在ARC有效时这样会引起变异错误。id型或对象型变量赋值...

  • IOS OC中类方法+(void)load 和 +(void)i

    Apple中的文档说明了 initialize和load的区别在于: load只要类所在文件被引用就会被调用 in...

网友评论

    本文标题:IOS中的void*和id

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