'withUnsafeMutableBytes'已过时:使用`withUnsafeMutableBytes <R>

时间:2019-06-02 17:16:59

标签: swift5

我对Xcode非常满意(提前致歉)。尝试将一些旧代码带入生活。通过尝试移至Swift 5获得以下内容。

'withUnsafeMutableBytes'已过时:改为使用withUnsafeMutableBytes<R>(_: (UnsafeMutableRawBufferPointer) throws -> R) rethrows -> R

目标:我要做的就是适当地修改代码并完成。

我查看了其他Stack Overflow消息,搜索了各种文章,尝试了不同的方法,但是无法快速确定需要更改的内容。我相信对于了解更多信息的人来说,解决方案非常简单。

var responseData = Data(count: Int(responseDataLength))

        _ = responseData.withUnsafeMutableBytes
        {
            mfError = MFMediaIDResponse_GetAsString(mfMediaIdResponsePtr.pointee, MFString($0), responseDataLength)
        }

1 个答案:

答案 0 :(得分:1)

这是我的示例,当刷新withUnsafeMutableBytes的旧代码时

希望有帮助

旧的:

_ = data.withUnsafeMutableBytes { (bytes: UnsafeMutablePointer<UInt8>) in
        memcpy((ioData.pointee.mBuffers.mData?.assumingMemoryBound(to: UInt8.self))!, bytes, dataCount)
    }

新的:

_ = data.withUnsafeMutableBytes { (rawMutableBufferPointer) in
        let bufferPointer = rawMutableBufferPointer.bindMemory(to: UInt8.self)
        if let address = bufferPointer.baseAddress{
            memcpy((ioData.pointee.mBuffers.mData?.assumingMemoryBound(to: UInt8.self))!, address, dataCount)
        }
    }

说明:

使用UnsafeMutablePointer<ContentType>,在其关闭时会得到一个unsafeMutablePointer。

要访问其内存,因此需要使用bindMemory进行键入,

有关Apple Pointer Doc

的更多详细信息