NSString und CFStringRef sind "gebührenfrei überbrückt", was bedeutet, dass Sie einfach zwischen ihnen tippen können.
Zum Beispiel:
CFStringRef aCFString = (CFStringRef)aNSString;
funktioniert perfekt und transparent. Gleichfalls:
NSString *aNSString = (NSString *)aCFString;
Die vorherige Syntax war für MRC. Wenn Sie ARC verwenden, lautet die neue Casting-Syntax wie folgt:
funktioniert auch. Das Wichtigste ist, dass CoreFoundation oft Objekte mit +1 Referenzzählwerten zurückgibt, was bedeutet, dass sie freigegeben werden müssen (alle CF [Type] Create Format-Funktionen tun dies).
Das Schöne ist, dass Sie in Cocoa sicher Autorelease oder Freigabe verwenden können, um sie freizugeben.
Wenn Sie mit ARC, die neue Casting-Syntax für diesen Fall nun NSString * aNSString = (__bridge NSString *) aCFString – MikeG
Dank MikeG hatte ich Ähnliches gilt für die umgekehrte Umwandlung zu tun: NSString * str = @ "ABC"; CFStringRef cstref = (__ Brücke CFStringRef) str; – KomodoDave
@NilObject Bitte aktualisieren Sie Ihre Antwort, um ARC einzuschließen, damit die Suchenden die Kommentare nicht überprüfen müssen. Vielen Dank. –