3 Stimmen

Umwandlung einer einfachen CFTypeRef in einen spezifischeren CoreFoundation-Typ

Gibt es eine einfache Möglichkeit, eine CTypeRef zu einem bestimmten CoreFoundation-Typ? Ich bin nicht auf der Suche nach einem Inline-Casting als (CFStringRef)myObjectRef aber ich würde gerne eine Hilfsmethode erstellen, die dies für mich für alle CoreFoundation-Typen erledigt.

Ich weiß, dass es möglich ist, etwas zu verwenden wie CFGetTypeID(myObjectRef) == CFStringGetTypeID() um herauszufinden, ob ein CTypeRef es un CFString . Allerdings könnte die Erstellung einer einzigen Methode zu diesem Zweck sehr langatmig werden und eine Menge if-Anweisungen enthalten.

Ist die Entwicklung einer Methode mit einer Reihe von if-Anweisungen gegen CFGetTypeID() der einzige Weg? Oder gibt es einen einfacheren Weg, dies zu tun?

UPDATE : mit Beispiel

Ich möchte eine Hilfsfunktion mit einigen Legacy-Code, den ich nicht ändern kann arbeiten zu machen. Derzeit erzeugt sie eine der folgenden Funktionen CFDictionaryRef , CFStringRef o CFURLRef als Rückgabewert, der als CTypeRef . Ich umgehe dieses Problem derzeit, indem ich Folgendes ausführe CFGetTypeID() auf den zurückgegebenen Wert anwenden, aber das ist nicht ideal. Anstatt überall C-artige Casts zu haben, würde ich lieber eine CastToCF() Helper, der dies für mich erledigt. Dies würde auch das Testen in der Zukunft erleichtern.

P.S. Ich mache mir keine Sorgen über veränderliche Typen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X