假设我有一个变量斯威夫特像如何给本地迅速变量的地址分配给UnsafeMutablePointer
var i: CInt = 123;
我怎样才能得到一个UnsafeMutablePointer<CInt>
指向的i
地址?
我知道可以通过调用
f(&i);
我还知道,C指针可以迅速被表示为UnsafeMutablePointer
通过此变量C函数void f(int *i)
的地址。所以问题是如何将i
的地址分配给这样的UnsafeMutablePointer
。我本来期望的是类似
var p: UnsafeMutablePointer<CInt> = &i;
或
var p = UnsafeMutablePointer<CInt>(&i);
应该工作,但事实并非如此。我想我可以写一个C库,提供以下功能
int *noop(int *p){ return p;}
可能在斯威夫特一样使用
var p = noop(&i);
但我还没有尝试过了,它不可能是正确的解决方案。一定有一些更简单的事情。
请不要问我为什么要这样做。它更像是一个理解Swift和C互操作性设计的学术问题。
相关:http://stackoverflow.com/questions/29976346/why-can-t-i-initialize-a-swift-unsafemutablepointeruint32-with-myuint32-or。 –