Неявное преобразование целевого указателя типа c 'CFDataRef' запрещено с ARC?

У меня есть сокет типа UDP, который я создал прошлым летом, который работал нормально, и все еще работает нормально, если я открою файл проекта. Однако я импортировал файлы.h/.m в новый проект, в котором есть ARC.

ARC не нравится следующая команда (используется в операторе if);

CFSocketSendData(WOLsocket, 
                   address,
                   Data,
                   0) < 0)

С ошибкой:

неявное преобразование целевого указателя типа c 'CFDataRef'(он же const struct__CFData'запрещено с ARC

Ошибка повторяется, один раз для WOLsocket, и один раз для адреса

где WOLsocket создается следующим образом;

WOLsocket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_DGRAM, IPPROTO_UDP, 0, NULL, NULL);
int desc = -1;
desc = CFSocketGetNative(WOLsocket);
int yes = 1;
setsockopt (desc, SOL_SOCKET, SO_BROADCAST, (char *)&yes, sizeof (yes))

(Есть код проверки ошибок, это голые основы!)

и адрес создан как таковой;

memset(&addr, 0, sizeof(addr));
    addr.sin_len = sizeof(addr);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(PORT); //port
    addr.sin_addr.s_addr = ad;
    address = [NSData dataWithBytes: &addr length: sizeof(addr)];

Я очень смущен тем, почему это происходит, все другие ошибки ARC, казалось, были решены путем потери операторов 'dealloc, release'!

Поэтому мой вопрос: как я могу заставить ARC перестать жаловаться на мое использование CFData? (Какие модификации мне нужно сделать?)

Спасибо,

Alex

1 ответ

И вопрос, и выбранный ответ для ARC и связующего состава должны ответить на ваш вопрос довольно хорошо.

Другие вопросы по тегам