繁体   English   中英

ARC 不允许目标 c 类型指针“CFDataRef”的隐式转换?

[英]implicit conversion of objective c type pointer 'CFDataRef' is disallowed with ARC?

我有一个去年夏天创建的 UDP 类型的套接字,它运行良好,如果我打开项目文件,它仍然可以正常运行。 但是,我已将 .h/.m 文件导入到一个新项目中,该项目确实有 ARC。

ARC 不喜欢以下命令(在 if 语句中使用);

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

出现错误:

目标 c 类型指针“CFDataRef”的隐式转换(又名“const struct__CFData”在 ARC 中是不允许的

错误重复出现,一次是WOLsocket,一次是address

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? (我需要做哪些修改?)

谢谢,

亚历克斯

ARC 和桥接演员的问题和选择的答案都应该很好地回答你的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM