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

Do I need to release an UnsafeBufferPointer, or the UnsafePointer used at the buffer pointer's starting memory location?

考虑 NSData 上的 this extension,它将 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, [=10=])
        }
        return bytesAsHexStrings.joinWithSeparator("")
    }
}

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

UnsafePointer(self.bytes) 只是从 UnsafePointer<Void>UnsafePointer<UInt8> 的指针转换(类似于 C 中的 "cast")。它不分配内存。

内存由NSData对象管理。你没有 alloc() 内存,因此不能在指针上调用 dealloc()。 您也没有 initialize() 记忆,因此一定不要 destroy()它。