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