首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将UnsafeMutablePointer<Void>指向自身

将UnsafeMutablePointer<Void>指向自身
EN

Stack Overflow用户
提问于 2016-05-31 20:09:07
回答 1查看 144关注 0票数 1

在C中,将指针指向分配给指针的内存位置是有效的:

代码语言:javascript
复制
static void * SomeContext = &SomeContext;

我已经看到了在带有KVO的Objective代码库中使用这个指针作为contextobserveValueForKeyPath:ofObject:change:context:中的用法。

是否可以将指针指向Swift中为该指针分配的内存空间,或者手动为指针分配内存?在初始化过程中试图将指针指向自身的内存值会导致错误(如预期的那样):

代码语言:javascript
复制
var somePointer: UnsafeMutablePointer<Void> = &somePointer // Error: Variable used within its own initial value

CMutableVoidPointer不再存在于该语言中,因此不推荐初始化指针(UnsafeMutablePointer<Void>()),只需设置指向nil的指针。

也许是这样:

代码语言:javascript
复制
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<()>')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-31 20:19:25

关于Swift 3:

代码语言:javascript
复制
var somePointer = UnsafeMutableRawPointer(bitPattern: 1)!
somePointer = UnsafeMutableRawPointer(mutating: &somePointer)

print(somePointer)
print(somePointer.load(as: UnsafeMutableRawPointer.self))
// Output of both should be the same.

Swift 2:

withUnsafePointer以获取指向变量的指针。然后把它分配给自己。

代码语言:javascript
复制
var somePointer: UnsafeMutablePointer<Void> = nil
withUnsafePointer(&somePointer) { somePointer = UnsafeMutablePointer($0) }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37554780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档