【问题标题】:fatal error: load from misaligned raw pointer致命错误:从未对齐的原始指针加载
【发布时间】:2017-02-15 14:28:55
【问题描述】:

对于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

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    确实,如您所述,它崩溃了。解决方案是使用该函数将字节数组转换为所需的类型:

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

    这是我的测试结果(红色导致 iPhone 5 模拟器因未知原因崩溃):

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-05
      • 2013-03-15
      • 2020-08-13
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 2016-08-01
      • 1970-01-01
      相关资源
      最近更新 更多