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.