繁体   English   中英

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

[英]How to create Int32 through UnsafePointer<Int32>?

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

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

就像每个UnsafePointer <>一样。 示例: NSErrorPointerNSErrorPointer 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中是星号* ,但是在Swift中是不可能的。


文档非常有帮助。

UnsafePointer<Memory>类型具有下标运算符。 如果指针指向某物,则下标0始终存在,因此它在操场上有效,并且具有以下优点:参考指南中记录了下标,但未记录memory属性。

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

y[0]  // 32

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM