В C, это действительно имеет точку указатель на ячейку памяти, выделенной для указателя:точка UnsafeMutablePointer <Void> к себе
static void * SomeContext = &SomeContext;
Я видел это используется в базы кода 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<()>')
Что именно вы пытаетесь достичь? – Alexander
@AMomchilov Как бы вы написали 'static void * SomeContext = & SomeContext;' в Swift. Это не часть более серьезной проблемы, я просто пытаюсь понять, как C-указатели перешли на работу Swift. – JAL
Я должен был знать, что вы ответили на такой вопрос, спасибо @MartinR. – JAL