Проблема с преобразованием указателя с использованием автоматического подсчета ссылок (ARC) - PullRequest
8 голосов
/ 13 июля 2011

Мой проект использует Автоматический подсчет ссылок , и я пытаюсь использовать следующую функцию 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 Ответ

11 голосов
/ 14 июля 2011

Вы пытались использовать промежуточный CFArrayRef, чтобы вы все равно могли передать указатель на ссылку (т. Е. Указатель на указатель) на AXUIElementCopyAttributeValue, но затем можете получить бесплатный мост с помощью обычного приведения ? Э.Г.

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

NSArray *subElements = (__bridge NSArray *)subElementsCFArray;
...