私のアプリケーションはCoreFoundationライブラリとインターフェイスしています。別のライブラリのいくつかの関数は、コア基底オブジェクトを返し、データを処理するためにオブジェクトの種類を特定する必要があります。 "タイプIDの値がリリースごとに変更される可能性があるため、コードでは、格納されたタイプIDまたはハードコードされたタイプIDに依存しないようにする必要はありません。また、型IDの観測されたプロパティ(例えば、小さな整数など)をコード化する。 "AppleがタイプIDをハードコードしないことを推奨している場合、Core Foundationオブジェクトを特定する方法は?
それに基づいて、私はenum(CFArray = 18, CFBoolean = 21
など)を避けなければなりません。仕事と新しいリリースの変化の影響を受けなければなりません 唯一のものは、何かのように:その後、
int ID = CFGetTypeID(obj);
if ID = CFBooleanGetTypeID()
...その後 if ID = CFStringGetTypeID()
...その後 if ID = CFDataGetTypeID()
.. のように...
これは本当に恐ろしいことです。オブジェクトを識別するためだけの呼び出しがたくさんあります。
アップルは、CFCopyTypeIDDescriptionから返された情報の内容やフォーマットに依存関係を作成しないことをお勧めします。このため、このオプションも除外する必要があります。
戻ってきたコアファウンデーションタイプを簡単に特定できる理由と、Appleが常に新しいリリースで既存のコードを破棄しようとしている理由は誰でも知っていますか?残念ながら
Appleは、リリースで既存のs/wを壊すことは望まない。 CFフレームワークが進化するにつれて、より標準化され、より中心的でより概念的になりつつあります。そのため、内部構造の変更が必要なのです。 –