Swift - UnsafePointer

  • UnsafeBufferPointer 常用于集合数组类
let ptr = UnsafeBufferPoint(start: &person, count: 1)
let basePtr = ptr.baseAddress // 首地址
basePtr?.pointee
  • unsafeBitCast(person, to: UnsafePointer<Person>.self) 强转数据类型

  • UnsafeRawPointer(bitPattern: 0x0000600000c54060) 通过地址获取指针

// 取出地址中的值
ptr.load(as: T.Type)
// 地址偏移
ptr.advanced(by: Int)
// 存储
ptr.storeBytes(of: T, toByteOffset: Int, as: T)
  • UnsafeMutablePointer<Int>.allocate(capacity: 1) / UnsafePointer<Int>
let intPointer = UnsafeMutablePointer<Int>.allocate(capacity: 1) 
intPointer.initialize(to: 10) // 初始化
intPointer.pointee = 4 // 赋值
intPointer.deallocate() // 释放
  • withUnsafeMutablePointer(to: &intValue, { }) 获取指针
intValue = try! withUnsafeMutablePointer(to: &intValue, { (ptr: UnsafeMutablePointer<Int>) throws -> Int in
    ptr.pointee += 1
    return ptr.pointee
})
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容