Swift 带结构的不可配置指针

Swift 带结构的不可配置指针,swift,struct,pass-by-reference,swift-playground,unsafemutablepointer,Swift,Struct,Pass By Reference,Swift Playground,Unsafemutablepointer,我无法使用UnsafemeutablePointer在Swift中引用结构变量。请看这个游乐场示例: import Cocoa var set: Set<Int> = [] let pointer = UnsafeMutablePointer<Set<Int>>.allocate(capacity: 1) pointer.initialize(to: set) pointer.pointee.insert(1) Swift.print(set) 导入可可粉

我无法使用UnsafemeutablePointer在Swift中引用结构变量。请看这个游乐场示例:

import Cocoa
var set: Set<Int> = []
let pointer = UnsafeMutablePointer<Set<Int>>.allocate(capacity: 1)
pointer.initialize(to: set)
pointer.pointee.insert(1)
Swift.print(set)
导入可可粉
变量集:集=[]
let pointer=unsafemeutablepointer.allocate(容量:1)
指针初始化(到:设置)
指针.pointee.insert(1)
快速打印(套)
输出为[],而我预期为[1]。我错过了什么


额外的问题:我应该在使用指针后显式地取消初始化吗?

Set
是一种值类型<代码>设置和
指针。指针
是独立的值。向后者添加元素不会改变前者。您需要引用做什么?您可以在引用类型(类)中“装箱”值,或将其作为inout参数传递给函数。更多的上下文可能会有所帮助。还有
WithUnsafemtablePointer(to:&set){…}
使用指向该值的指针调用闭包。但该指针仅在闭包内部有效。通常,Swift只允许在保证指向值的生命周期的受控范围内创建指向值的指针。以下是一个与数组远程相关的问题:。具有inout参数的嵌套函数可能是最快捷的方法。Swift在这些类型名称中加上“不安全”是有原因的;不鼓励使用它们,它们的存在主要是为了与C兼容,而不是为了通用。
Set
是一种值类型<代码>设置和
指针。指针
是独立的值。向后者添加元素不会改变前者。您需要引用做什么?您可以在引用类型(类)中“装箱”值,或将其作为inout参数传递给函数。更多的上下文可能会有所帮助。还有
WithUnsafemtablePointer(to:&set){…}
使用指向该值的指针调用闭包。但该指针仅在闭包内部有效。通常,Swift只允许在保证指向值的生命周期的受控范围内创建指向值的指针。以下是一个与数组远程相关的问题:。具有inout参数的嵌套函数可能是最快捷的方法。Swift在这些类型名称中加上“不安全”是有原因的;它们不受欢迎,它们的存在主要是为了与C兼容,而不是为了通用。