Неявное преобразование целевого указателя типа 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 и связующего состава должны ответить на ваш вопрос довольно хорошо.