我最近看到了一个委托方法(似乎有效),看起来像这样:
- (void)doSomethingWithThisPieceOfData:(void *)theData;
委托方法然后将数据转换为:
- (void)doSomethingWithThisPieceOfData:(void *)theData { anObject * myObject; myObject =(anObject)theData; .... }
为什么这样做并且是良好的编码实践?我本来会使用(id *)theData。
感谢。
答案 0 :(得分:4)
void *作为一个类型表示可以传递任何指针,并且收到它的代码会将它转换为它认为合适的任何类型。
答案 1 :(得分:0)
它只是意味着指针引用的对象的大小是未声明的。指针将指向内存分配的开始,并由接收器以适当的方式转换或读取内存。
如果指定了类型,指针仍然指向内存分配的开头,但是如果你增加它的位置,它将跳过该特定类型所需的所有内存,并指向下一个内存块。 / p>
使用void指针,这不会发生。如果增加位置,则可以在内存中找到对象而不是下一个对象。你可以通过这种方式更好地控制内存。
此previous SO answer也可能对您有所帮助。