我想通过Int32
获得Int32 Pointer
的值。
var result:Int32 = 32
var y = withUnsafePointer(&result, {(point:UnsafePointer<Int32>) -> UnsafePointer<Int32> in
return point
})
答案 0 :(得分:5)
就像每个UnsafePointer&lt;&gt ;.示例:NSErrorPointer
这是AutoreleasingUnsafePointer<NSError?>
,您可以使用memory属性获取值。
使用属性memory
var errPtr: UnsafePointer<NSError> = ...
var err: NSError = errPtr.memory // not optional
您的示例的解决方案非常简单:
var result:Int32 = 32
var y = withUnsafePointer(&result, {(point:UnsafePointer<Int32>) -> UnsafePointer<Int32> in
return point
})
y.memory // in the playground it shows 32 :-D
Swift中没有解除引用运算符,在C中它是aterisk *
,但在Swift中是不可能的。
documentation非常有用。
答案 1 :(得分:1)
类型UnsafePointer<Memory>
有一个下标运算符。如果指针指向某个东西,则下标0始终存在,因此这在操场中有效,并且它具有以下优点:参考指南记录了下标而不是memory
属性。
var result:Int32 = 32
var y = withUnsafePointer(&result, {(point:UnsafePointer<Int32>) -> UnsafePointer<Int32> in
return point
})
y[0] // 32