0

Ich habe einen UDP-Typ-Socket, den ich letzten Sommer erstellt habe, der gut funktionierte, und läuft immer noch gut, wenn ich die Projektdatei öffne. Allerdings habe ich die .h/.m-Dateien in ein neues Projekt importiert, das über ARC verfügt.implizite Konvertierung von Ziel-C-Typ-Zeiger 'CFDataRef' ist nicht erlaubt mit ARC?

ARC mag nicht den folgenden Befehl (in einer if-Anweisung verwendet);

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

mit dem Fehler:

implicit conversion of objective c type pointer 'CFDataRef'(aka 'const struct__CFData' is disallowed with ARC

Der Fehler wiederholt wird, einmal für WOLsocket, und einmal für die Adresse

wo WOLsocket erstellt wird wie folgt;

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)) 

(Es gibt Fehlerprüfcode, das die nackten Grundlagen ist!)

und Adresse als so erstellt;

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)]; 

Ich bin sehr verwirrt, warum dies geschieht, werden alle anderen ARC Fehler schienen die ‚dealloc, Release‘ Aussagen von lossing gelöst zu werden!

Also meine Frage ist, Wie bekomme ich ARC zu stoppen, sich über meine Verwendung von CFData zu beschweren? (Welche Änderungen muss ich machen?)

Danke,

Alex

Antwort

0

Sowohl die Frage und gewählte Antwort auf ARC and bridged cast sollte Ihre Frage ziemlich gut beantworten.

Verwandte Themen