私のアプリケーションは、CoreFoundation ライブラリと連携しています。別のライブラリの一部の関数は、コア基盤オブジェクトを返します。データを処理するには、オブジェクトの種類を識別する必要があります。さて、CFType ライブラリ リファレンスを見ると、Apple は次のように明確に述べています。タイプ ID の観測されたプロパティ (たとえば、小さい整数であるなど)。」
それに基づいて、列挙型(CFArray = 18, CFBoolean = 21
など)を避ける必要があります。機能し、新しいリリースの変更の影響を受けない唯一のことは、次のようなものです。
int ID = CFGetTypeID(obj);
if ID = CFBooleanGetTypeID()
そしたら…
if ID = CFStringGetTypeID()
そしたら…
if ID = CFDataGetTypeID()
そしたら…など…
これは本当に恐ろしいことです。オブジェクトを識別するためだけの多くの呼び出し。
Apple はまた、CFCopyTypeIDDescription から返される情報のコンテンツまたは形式に対する依存関係を作成しないことを推奨しているため、このオプションも除外する必要があります。
返されたコア基盤タイプを簡単に特定する方法と、Apple が常に新しいリリースで既存のコードを壊そうとする理由を知っている人はいますか?