C では、ポインターに割り当てられたメモリ位置を指すポインターを持つことは有効です。
static void * SomeContext = &SomeContext;
このポインターをcontext
in 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<()>')