JAL*_*JAL 3 unsafe-pointers swift
考虑这个将对象序列化为十六进制字符串的扩展:NSDataNSData
Run Code Online (Sandbox Code Playgroud)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("") } }
如果 anUnsafeBufferPointer是非拥有指针,这是否意味着我不需要(或无法)显式调用 destroy?如果我UnsafePointer从对象字节的内存中创建一个NSData指针,我是否需要确保在复制缓冲区后销毁该指针?
UnsafePointer(self.bytes)只是从UnsafePointer<Void>到 的指针转换UnsafePointer<UInt8>(类似于 C 中的“强制类型转换”)。它不分配内存。
内存由NSData对象管理。您没有alloc()内存,因此不能调用dealloc()指针。你也没有initialize()记忆,因此也不能有
destroy()记忆。
| 归档时间: |
|
| 查看次数: |
1190 次 |
| 最近记录: |