You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift:无需分配内存初始化UnsafeMutablePointer<CGImage?>

初始化UnsafeMutablePointer<CGImage?>的最简方案

针对VTCreateCGImageFromCVPixelBuffer这类会自行分配内存的Core Foundation函数,完全不需要手动调用allocate方法,最简方式是利用Swift的inout语法结合临时变量:

  1. 声明一个var修饰的CGImage?临时变量(初始值可设为nil)
  2. 用&符号将该变量传入函数的imageOut参数,Swift会自动生成符合要求的UnsafeMutablePointer<CGImage?>指针

示例代码

var resultCGImage: CGImage? = nil
let status = VTCreateCGImageFromCVPixelBuffer(imageBuffer, options: nil, imageOut: &resultCGImage)

// 检查执行状态并使用生成的CGImage
if status == noErr, let cgImage = resultCGImage {
    // 在这里处理cgImage
}

替代写法(显式创建指针)

如果需要更明确地控制指针生命周期,也可以用withUnsafeMutablePointer函数,不过上面的&写法更简洁:

var resultCGImage: CGImage?
let status = withUnsafeMutablePointer(to: &resultCGImage) { ptr in
    VTCreateCGImageFromCVPixelBuffer(imageBuffer, options: nil, imageOut: ptr)
}

注意事项

  • 临时变量必须是var类型,因为函数需要修改其指向的内容
  • 生成的CGImage由Core Foundation内存管理规则处理,在Swift中会自动通过ARC管理,无需手动释放

内容的提问来源于stack exchange,提问作者jnwjack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 23:29:58