8

私のプロジェクトは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

これを解決するにはどうすればよいですか?

4

1 に答える 1

10

中間のCFArrayRefを使用してみましたが、それでもrefへのポインター(つまり、ポインターへのポインター)をに渡すことができますがAXUIElementCopyAttributeValue、通常のキャストだけでフリーダイヤルブリッジを実現できますか?例えば

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

NSArray *subElements = (__bridge NSArray *)subElementsCFArray;
于 2011-07-13T20:55:00.067 に答える