在 Cocoa 中,我使用以下代码获取应用程序的窗口数组:
CFArrayRef windows;
AXError gettingWindowsResult = AXUIElementCopyAttributeValues(app, (CFStringRef)NSAccessibilityWindowsAttribute, 0, 999, &windows);
然后我检查这些窗口的一些值,并将AXUIElementRef
其中一个窗口的值保存在我班级的变量中。在方法结束时,我释放CFArrayRef
以确保我没有任何内存泄漏:
if (windows != nil)
{
CFRelease(windows);
}
虽然这使得当我尝试使用我保留的窗口时,我得到了一个糟糕的访问错误。所以我的问题是:我有必要释放数组吗?如果是这样,我该如何防止错误的访问错误?