gpt4 book ai didi

swift - 我是否需要释放一个 UnsafeBufferPointer 或在缓冲区指针的起始内存位置使用的 UnsafePointer?

转载 作者:可可西里 更新时间:2023-11-01 00:59:01 26 4
gpt4 key购买 nike

考虑 this extension在将 NSData 对象序列化为十六进制字符串的 NSData 上:

extension NSData {
func base16EncodedString(uppercase uppercase: Bool = false) -> String {
let buffer = UnsafeBufferPointer<UInt8>(start: UnsafePointer(self.bytes), count: self.length)
let hexFormat = uppercase ? "X" : "x"
let formatString = "%02\(hexFormat)"
let bytesAsHexStrings = buffer.map {
String(format: formatString, $0)
}
return bytesAsHexStrings.joinWithSeparator("")
}
}

如果 UnsafeBufferPointer 是非拥有指针,这是否意味着我不需要(或不能)显式调用 destroy?如果我从 NSData 对象的字节内存中创建一个 UnsafePointer,我是否需要确保在复制缓冲区后销毁该指针?

最佳答案

UnsafePointer(self.bytes)只是 UnsafePointer<Void> 的指针转换至 UnsafePointer<UInt8> (就像 C 中的“类型转换”)。它不分配内存。

内存由 NSData 管理目的。你没有alloc()这内存,因此不能调用 dealloc()在指针上。你也没有initialize()内存,因此不能 destroy()

关于swift - 我是否需要释放一个 UnsafeBufferPointer 或在缓冲区指针的起始内存位置使用的 UnsafePointer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38592754/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com