我想了解Swift中指针的使用,特别是:Unsafe[Mutable]Pointer
和UnsafeRaw[Mutable]Pointer
。我有几个关于这个问题的问题。Swift中的指针
是
UnsafePointer <T>
等于const T * Pointer
吗?和UnsafeMutablePointer <T>
等于T * Pointer
在C?Unsafe[Mutable]Pointer
和UnsafeRaw[Mutable]Pointer
有什么区别?为什么这个编译
func receive(pointer: UnsafePointer<Int>) {
print("param value is: \(pointer.pointee)")
}
var a: Int = 1
receive(pointer: &a) // prints 1
但是这给了我一个错误?
var a: Int = 1
var pointer: UnsafePointer<Int> = &a // error : Cannot pass immutable value of type 'Int' as inout argument
'var pointer:UnsafePointer =&a'永远无效,你的“解决方法”是不安全的:传递给'withUnsafePointer'闭包的指针只在执行闭包期间有效。它不能传递给封闭外部。 - 你*无法安全地将指针自由地传递给Swift变量。 –
@MartinR谢谢,我会编辑我的答案。不太清楚OP想要什么,所以我不确定他们是否想要安全/不安全的行为。但很明显,他们是新手,更好地完全消除任何不安全的行为。 – JAL