gpt4 book ai didi

objective-c - 如何将 Swift 数组转换为 CFArray?

转载 作者:搜寻专家 更新时间:2023-10-31 22:16:04 24 4
gpt4 key购买 nike

我正在尝试使用 Swift 在 Mac OS X 应用程序中捕获窗口列表。 CGWindowListCreateImageFromArray 函数需要一个 CFArray。我已经尝试了几件事,这是我所拥有的最接近的东西。或者有没有更好的方法来转换数组?

import Cocoa

// Example swift array of CGWindowID's
var windowIDs = [CGWindowID]();
windowIDs.append(1);
windowIDs.append(2);

// Convert to CFArray using CFArrayCreate
let allocator = kCFAllocatorDefault
let numValues = windowIDs.count as CFIndex
let callbacks: UnsafePointer<CFArrayCallBacks> = nil
var values: UnsafeMutablePointer<UnsafePointer<Void>> = nil

/* how do I convert windowIDs to UnsafeMutablePointer<UnsafePointer<Void>> for the values? */

let windowIDsCFArray = CFArrayCreate(allocator, values, numValues, callbacks);

let capture = CGWindowListCreateImageFromArray(CGRectInfinite, windowIDsCFArray, CGWindowImageOption(kCGWindowListOptionOnScreenOnly));

最佳答案

只要将 CGWindowID 设置为 CFTypeRef,就可以使用数组初始化 UnsafeMutablePointer:

var windows: [CFTypeRef] = [1, 2]
var windowsPointer = UnsafeMutablePointer<UnsafePointer<Void>>(windows)
var cfArray = CFArrayCreate(nil, windowsPointer, windows.count, nil)

关于objective-c - 如何将 Swift 数组转换为 CFArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28947049/

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