gpt4 book ai didi

objective-c - 如何快速创建 Pixel_8 缓冲区

转载 作者:搜寻专家 更新时间:2023-11-01 07:13:58 26 4
gpt4 key购买 nike

我正在尝试快速转换 Objective-C 代码,但我完全无法寻找一种方法来获取 Pixel_8 缓冲区(我通常使用 calloc 创建) in objective-c) swift.

这是一个 Objective-c 的例子……它是如何转换成 swift 的?

Pixel_8 *buffer = (Pixel_8 *)calloc(width*height, sizeof(Pixel_8)); 

最佳答案

您可以使用 calloc()在 Swift 中,但你必须“绑定(bind)”原始指向所需类型的指针:

let buffer = calloc(width * height, MemoryLayout<Pixel_8>.stride).assumingMemoryBound(to: Pixel_8.self)

// Use buffer ...

free(buffer)

或者:

let buffer = UnsafeMutablePointer<Pixel_8>.allocate(capacity: width * height)
buffer.initialize(to: 0, count: width * height)

// Use buffer ...

buffer.deinitialize()
buffer.deallocate(capacity: width * height)

但最简单的解决方案是分配一个 Swift 数组:

var buffer = [Pixel_8](repeating: 0, count: width * height)

自动进行内存管理。你可以通过buffer到任何需要 UnsafePointer<Pixel_8> 的函数, 或者通过 &buffer任何需要 UnsafeMutablePointer<Pixel_8> 的函数.

关于objective-c - 如何快速创建 Pixel_8 缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43293610/

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