0

これは、AppleDevelopersWebサイトからのものです。

const void * CFArrayGetValueAtIndex(CFArrayRef theArray、CFIndex idx);

戻り値
theArrayのidxインデックスの値。戻り値がCoreFoundationオブジェクトの場合、所有権はCoreFoundationのメモリ管理プログラミングガイドの「GetRule」に従います。

では、戻り値がCFTypeであるかどうかをどのようにテストしますか?

編集:

/usr/lib/system/libsystem_c.dylibに__isctypeという関数が見つかりました。これは、私が探しているものを正確に実行します。誰かがこの関数についてもっと知っていますか?

4

1 に答える 1

2

要するに、あなたは常にあなたに提供されるオブジェクトのファミリーを知っているべきです。

CF互換タイプ(NSObjectsを含む)でない場合は、明示的なドキュメントで知っておく必要があります。非常に珍しいCFArrayを作成したか、クライアントがこれを示します(たとえば、配列に構造体へのポインターが含まれていることを指定します)。これは安全なデフォルトの仮定であり、CFArrayでCF互換オブジェクトを返さないすべての呼び出しは、それを大声で明確にする必要があります。

疑わしい場合は、開発中にいつでもオブジェクトが返される可能性がCFRetainありますCFRelease(CFタイプでない場合はクラッシュするはずです)。

于 2012-09-05T15:44:48.437 に答える