gpt4 book ai didi

xcode - Cocoa 保留数组中的单个对象

转载 作者:行者123 更新时间:2023-12-03 17:24:24 25 4
gpt4 key购买 nike

在 Cocoa 中,我使用以下代码获取应用程序的窗口数组:

CFArrayRef windows;
AXError gettingWindowsResult = AXUIElementCopyAttributeValues(app, (CFStringRef)NSAccessibilityWindowsAttribute, 0, 999, &windows);

然后,我检查这些窗口的一些值,并将其中一个窗口的 AXUIElementRef 保存在我的类的变量中。在该方法结束时,我释放了 CFArrayRef 以确保没有任何内存泄漏:

if (windows != nil)
{
CFRelease(windows);
}

尽管如此,当我尝试使用我保留的窗口时,我收到了错误的访问错误。所以我的问题是:我是否有必要释放数组?如果是这样,我该如何防止错误访问错误?

最佳答案

为什么不为您想要保留的一个元素制作“AXUIElementRef”的保留副本?

为此,请找出要保留的元素的索引,然后再次调用“AXUIElementCopyAttributeValues”函数,只是这次只需传递所需元素的索引且“maxValue”为 1。例如,对于位置 26 处的元素:

AXError gettingWindowsResult = AXUIElementCopyAttributeValues(app, (CFStringRef)NSAccessibilityWindowsAttribute, 26, 1, &arrayOfOne);

然后您可以安全地在“windows”数组上调用“CFRelease”。

关于xcode - Cocoa 保留数组中的单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11300091/

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