致命错误:从未对齐的原始指针加载

时间:2017-02-15 14:28:56

标签: ios swift

对于 iPhone5(10.2)模拟器此功能:

static func fromByteArray<T>(_ value: [UInt8], _: T.Type) -> T {
        return value.withUnsafeBytes {
            $0.baseAddress!.load(as: T.self)
        }
    }

$0.baseAddress!.load(as: T.self)发生此错误时崩溃:

  

致命错误:从未对齐的原始指针加载

有人知道解决方案吗?

我正在使用此代码:

https://stackoverflow.com/a/26954091/1979882

修改 它适用于iPhone5s但不适用于iPhone5

1 个答案:

答案 0 :(得分:3)

事实上,它正如你所描述的那样崩溃。解决方案是使用此函数将字节数组转换为所需类型:

func fromByteArray<T>(_ value: [UInt8], _: T.Type) -> T {
        return value.withUnsafeBufferPointer {
            $0.baseAddress!.withMemoryRebound(to: T.self, capacity: 1) {
                $0.pointee
            }
        }
    }

以下是我测试的结果(红色因未知原因导致iPhone 5模拟器崩溃): enter image description here