iOS: CFTypeRef verboten mit ARC
Möchte ich erhalten Benutzername/Passwort aus meinem Schlüsselbund. dafür habe ich diese Anleitung befolgt:
Aber dieser Teil ist nicht erlaubt mit den BOGEN:
NSData *result = nil;
OSStatus status = SecItemCopyMatching(
(CFDictionaryRef)searchDictionary,
(CFTypeRef *)&result);
Was kann ich tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
ARC verwaltet nur Objective-C-Typen. Wenn Sie die Umwandlung von Kern-Stiftung-Typen, die Sie haben, zu sagen, ARC, besitzt die variable mithilfe
__bridge
,__bridge_retained
oder__bridge_transfer
.Hier Apples offizielle Dokumentation auf toll-free bridging unter ARC, oder sehen in diesem blog-post (nach unten scrollen, um Toll-Free Bridging) für einen großen überblick.
Beispiel:
__bridge
aber für(CFTypeRef *)&result);
es hat nicht funktioniert.. Xcode bemerkt: Inkompatible Typen ' - casting NSData *__stark *' zu 'CFTypeRef *' (aka 'const void **') mit ein __Brücke geworfenCFTypeRef r = (__bridge CFTypeRef)result; OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)searchDictionary, &r);