CTypeRef
を特定のCoreFoundationタイプに変換する簡単な方法はありますか?私は(CFStringRef)myObjectRef
としてインラインキャストするつもりはありませんが、すべてのCoreFoundationタイプについてこれを行うためのヘルパーメソッドを作成したいと考えています。基本的なCFTypeRefをより具体的なCoreFoundationタイプにキャストする
CFGetTypeID(myObjectRef) == CFStringGetTypeID()
のようなものを使用して、CTypeRef
がCFString
であるかどうかを知ることができます。しかし、これを行うための単一のメソッドを作成すると、非常に冗長になり、if文が多く発生する可能性があります。
CFGetTypeID()
に対して唯一の方法でifステートメントの束を使ってメソッドを構築していますか?またはこれを行う簡単な方法はありますか?
UPDATE:例
と私は変更することはできませんいくつかのレガシーコードで動作するヘルパー関数を作成したいと思います。現在、CFDictionaryRef
,CFStringRef
またはCFURLRef
のいずれかが戻り値としてCTypeRef
として提供されています。私は現在、戻り値にCFGetTypeID()
を実行してこれを回避していますが、これは理想的ではありません。どこにCスタイルのキャストを置くのではなく、私はむしろCastToCF()
ヘルパーを持っています。これは、将来的にもテストを容易にするのに役立ちます。
P.S.私は可変型について心配していません。
私は参考にしたい例を追加しました。 – KushalP
@KushalP更新 – justin