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

时间:2012-04-05 01:42:36

标签: objective-c automatic-ref-counting implicit-conversion cfdata

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

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

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

错误:

  

目标c类型指针'CFDataRef'的隐式转换(ARC不允许使用'const struct__CFData'

错误重复,一次用于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? (我需要做哪些修改?)

谢谢,

亚历

1 个答案:

答案 0 :(得分:0)

ARC and bridged cast的问题和选择的答案都应该很好地回答你的问题。