我有一个去年夏天创建的 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?(我需要做哪些修改?)
谢谢,
亚历克斯