如何通过UnsafePointer <int32>?</int32>创建Int32

时间:2014-07-17 07:31:31

标签: ios swift

我想通过Int32获得Int32 Pointer的值。

var result:Int32 = 32
var y = withUnsafePointer(&result, {(point:UnsafePointer<Int32>) -> UnsafePointer<Int32> in
    return point
})

2 个答案:

答案 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