2009-08-02 11 views
5

私はこのテーマに関するドキュメントを見つけることができないので、独自のコア基盤 "クラス"を作成することは可能ですか? (CFRetain()とCFReleaseで使用できるクラスのようなクラス)Objective-Cのオーバーヘッドや独自のオブジェクト階層を作成することなく、Core Foundationに組み込まれた多相機能とオブジェクト検査を利用したいと思います。コア基盤クラスの作成

答えて

4

ご注意:私は、Objective-Cがロードされていない場合、Core Foundationには真の継承がないと考えています。Objective-Cをロードすると、とにかくマイナーな関連の減速が発生します。

おそらくドキュメントはありませんが、可能性があります。それは確かにきれいではありません。 CF-Lite source code(リンクはMac OS X 10.5.7)を見て、フレームワークの実装の感触を試してみてください。

Objective-Cのオーバーヘッドがメッセージの呼び出しのオーバーヘッドである場合、それを最適化する方法はたくさんあります(たとえば、-instanceMethodForSelector:メソッド)。 Objective-Cコードを最適化して高速化するよりも、Core Foundationフレームワークへの道を拓くために、より多くの時間を費やす可能性が非常に高いです。

+1

ありがとうございました。私はCF-liteパッケージを見ましたが、ドキュメント化されていない/プライベートな関数を使わずに独自のCFタイプを作ることは基本的に不可能です:( 私は良いol 'Obj-CとIMPキャッシングを使用するように見えます。 –

+0

本当に必要な場合は、 'IMP'キャッシングと直接ivarアクセス​​を介してObjective-Cオブジェクト用のスタティックCスタイルのラッパーを書くことができます... heck、私は、GC以外の環境でも独自の割り当てをロールすることができます。 –

0

技術的には、Core Foundationクラスはありません。それらは不透明な型です。

関連する問題