如何解决UnsafeMutablePointer使用我的结构获得EXC_BAD_ACCESS
打印效果很好
decoded hostoryCount 2 layersCount 1 size PixelSize(width: 1024,height: 1024)
Thread 1: EXC_BAD_ACCESS (code=1,address=0x94753cf25f30)
我的代码
struct RGBA {
var r: UInt8
var g: UInt8
var b: UInt8
var a: UInt8
}
class TestData {
let canvas = // canvas is [[RGBA]]
let testLayer = LayerRGBA(canvas: canvas)
let testAnimation = AnimationRGBA([testLayer])
let testHistory = HistoryRGBA(layers: [testLayer],animations: [testAnimation])
let testValue: TEST = [testHistory,testHistory]
let enc = TestArchiver.encode(value: testValue)
let dec = TestArchiver.decode(data: enc)
print("decoded","hostoryCount",dec.count,"layersCount",dec[0].layers.count,"size",dec[0].layers[0].size)
// get error Thread 1: EXC_BAD_ACCESS (code=1,address=0x94753cf25f30)
}
typealias TEST = [HistoryRGBA]
class TestArchiver {
static func encode(value: TEST) -> NSData {
var val = value
return withUnsafePointer(to: &val) { pointer in
NSData(bytes: pointer,length: MemoryLayout.size(ofValue: value))
}
}
static func decode(data: NSData) -> TEST {
let pointer = UnsafeMutablePointer<TEST>.allocate(capacity: MemoryLayout.size(ofValue: TEST.self))
data.getBytes(pointer,length: data.length)
return pointer.move()
}
}
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。