Consider the following code in C:
void someFunction ( int type, void * someData ) {
unsigned value = (int)someData;
}
我知道这段代码看起来有些奇怪,但这个函数是一个回调函数,回调函数必须带有void *
参数,因为很多时候someData
实际上是指向某个内存结构体的指针(type
会告诉我它是哪个结构体),但在这种情况下不是。在这种情况下,它只是一个无符号整数值;不是指向该值的指针,而是该值本身。调用者真正调用这个函数的方式如下:
unsigned value = ...;
callbackFunction(type, (void *)value);
是的,那很愚蠢且难看,但我并没有编写代码,也不能进行更改。我只需要实现回调函数。而我真的很想在Swift(Swift 3)中实现它。但是在Swift中,回调函数必须长这个样子:
func someFunction ( _ type: Int, _ someData: UnsafeMutableRawPointer? ) -> Void
我的函数调用很好,但是我该如何获取数字指针值呢?因为我需要无符号整型值并将其传递给另一个函数。