《iOS基础系列》id和void*的区别

本文内容参考自stackOverFlow,参考链接

id 和 void* 的区别

void *

  • void * 表示对一些包含未输入/未知内容的随机内存快的引用,void *的一个常见且有效的用法是作为一个通过其他API传递的不透明数据引用。

id

  • id 表示某个未知类的Objective-C对象的引用

区别

  • 尝试在void *类型的引用上调用方法将引发编译器警告。尝试调用id类型上的方法只有在编译器看到的任何@interface声明中没有声明被调用的方法时才会发出警告。

总结

  • 因此,永远不要将对象引用为void *。类似地,应该避免使用id类型变量来引用对象。尽可能使用最特定的类类型引用。甚至NSObject *也比id好,因为编译器至少可以提供更好的方法调用验证。