本文内容参考自stackOverFlow,参考链接
id 和 void* 的区别
void *
- void * 表示对一些包含未输入/未知内容的随机内存快的引用,void *的一个常见且有效的用法是作为一个通过其他API传递的不透明数据引用。
id
- id 表示某个未知类的Objective-C对象的引用
区别
- 尝试在void *类型的引用上调用方法将引发编译器警告。尝试调用id类型上的方法只有在编译器看到的任何@interface声明中没有声明被调用的方法时才会发出警告。
总结
- 因此,永远不要将对象引用为void *。类似地,应该避免使用id类型变量来引用对象。尽可能使用最特定的类类型引用。甚至NSObject *也比id好,因为编译器至少可以提供更好的方法调用验证。