gpt4 book ai didi

swift - 如何在 Swift 中创建 CVPixelBuffer 属性字典

转载 作者:搜寻专家 更新时间:2023-11-01 06:41:59 35 4
gpt4 key购买 nike

要在 Objective-C 中创建一个 CVPixelBuffer 属性,我会这样做:

NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], kCVPixelBufferCGImageCompatibilityKey,
[NSNumber numberWithBool:YES], kCVPixelBufferCGBitmapContextCompatibilityKey,
nil];

然后在 CVPixelBufferCreate 方法中,我将传递 (__bridge CFDictionaryRef) attributes 作为参数。

Swift 中,我正在尝试创建这样的字典:

let attributes:[CFString : NSNumber] = [
kCVPixelBufferCGImageCompatibilityKey : NSNumber(bool: true),
kCVPixelBufferCGBitmapContextCompatibilityKey : NSNumber(bool: true)
]

但我发现 CFString 不是 Hashable,而且我一直无法让它工作。

有人可以提供一个示例说明它在 Swift 中的工作原理吗?

最佳答案

只需使用 NSString 代替:

let attributes:[NSString : NSNumber] = // ... the rest is the same

毕竟,这就是您在 Objective-C 代码中真正做的事情;只是 Objective-C 为您搭建了桥梁。 CFString 不能是 Objective-C 字典中的键,也不能是 Swift 字典中的键。

另一种(可能更快捷)的方式是这样写:

let attributes : [NSObject:AnyObject] = [
kCVPixelBufferCGImageCompatibilityKey : true,
kCVPixelBufferCGBitmapContextCompatibilityKey : true
]

请注意,通过这样做,我们也不必将 true 包装在 NSNumber 中;这将由 Swift 的自动桥接为我们处理。

关于swift - 如何在 Swift 中创建 CVPixelBuffer 属性字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34076924/

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