簡體   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