【发布时间】:2017-12-28 09:20:51
【问题描述】:
如何将UnsafeMutablePointer<T?> 用作UnsafeMutablePointer<UnsafeRawPointer?>!
例如尝试为类型 T 分配 n 块内存,以从 CFSet cfsetref 中获取值:
var array = UnsafeMutableRawPointer<T?>.allocate(capacity: n)
CFSetGetValues(cfsetref, array) // error
这给出了错误
无法将“
UnsafeMutablePointer<T?>”类型的值转换为预期值 参数类型'UnsafeMutablePointer<UnsafeRawPointer?>!'
我尝试将array 声明为UnsafeMutablePointer<UnsafeRawPointer?> 然后这样做
for i in 0..<n {
var d = array[i]
d?.bindMemory(to: T.self, capacity: 1)
}
但我在尝试访问array[i] 时仍然收到EXC_BAD_INSTRUCTION 错误(在将内存再次绑定到T 之后)
【问题讨论】:
标签: arrays swift pointers memory