在 C 中,将指针指向分配给指针的内存位置是有效的:
static void * SomeContext = &SomeContext;
通过将此指针用作 in ,我已经看到它在带有 KVO 的 Objective-C 代码库中context
使用observeValueForKeyPath:ofObject:change:context:
。
是否可以将指针指向 Swift 中为该指针分配的内存空间,或者手动为该指针分配内存?在初始化期间尝试将指针指向自身的内存值会导致错误(如预期的那样):
var somePointer: UnsafeMutablePointer<Void> = &somePointer // Error: Variable used within its own initial value
CMutableVoidPointer
该语言中不再存在,并且UnsafeMutablePointer<Void>()
不推荐使用初始化指针 ( ) 并将指针设置为nil
.
也许是这样的:
var ptr = malloc(sizeof(UnsafeMutablePointer<Void>))
ptr = &ptr // Error: error: cannot assign value of type 'inout UnsafeMutablePointer<Void>' (aka 'inout UnsafeMutablePointer<()>') to type 'UnsafeMutablePointer<Void>' (aka 'UnsafeMutablePointer<()>')