使用自动引用计数(ARC)进行指针转换的问题

时间:2011-07-13 19:58:02

标签: objective-c cocoa automatic-ref-counting

我的项目正在使用Automatic Reference Counting,我正在尝试使用以下辅助功能API函数:

extern AXError AXUIElementCopyAttributeValue (
    AXUIElementRef element,
    CFStringRef attribute,
    CFTypeRef *value);

要调用该函数,我正在做这样的事情:

NSArray *subElements = nil;
AXUIElementCopyAttributeValue(..., (CFArrayRef *)&subElements);

但是,ARC在最后一个参数上抛出以下错误:

error: Automatic Reference Counting Issue: Cast of an indirect pointer to an Objective-C pointer to 'CFArrayRef *' (aka 'const struct __CFArray **') is disallowed with ARC

如何解决此问题?

1 个答案:

答案 0 :(得分:11)

你是否尝试过使用中间CFArrayRef,这样你仍然可以将一个指向ref的指针(即一个指向指针的指针)传递给AXUIElementCopyAttributeValue,但是可以通过一个指针实现免费的桥接普通演员? E.g。

CFArrayRef subElementsCFArray;
AXUIElementCopyAttributeValue(..., &subElementsCFArray);

NSArray *subElements = (__bridge NSArray *)subElementsCFArray;