我的项目正在使用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
如何解决此问题?
答案 0 :(得分:11)
你是否尝试过使用中间CFArrayRef,这样你仍然可以将一个指向ref的指针(即一个指向指针的指针)传递给AXUIElementCopyAttributeValue
,但是可以通过一个指针实现免费的桥接普通演员? E.g。
CFArrayRef subElementsCFArray;
AXUIElementCopyAttributeValue(..., &subElementsCFArray);
NSArray *subElements = (__bridge NSArray *)subElementsCFArray;