2009-08-23 2 views
5

私はObjective-Cアプリケーション(MacまたはiPhone)で使用したいC言語で書かれたライブラリを持っています。Objective-CでCライブラリをラッピングするヒント

残念ながら、このライブラリはオープンソースのスペースに個人によって書かれているため、ドキュメントはまれであり、不完全です。ライブラリでの使用方法はわかりますが、コードベース全体の概要はわかりません。

私がしたいことは、Objective-Cのライブラリを簡単に使える、転送可能なクラスにまとめることです。

  • 誰もこのアプローチにどのようなヒントがありますか?
  • ライブラリがどのように構造化されているかの視覚的な階層を取得する最善の方法についてのアドバイスはありますか?
  • 再利用性と使いやすさのためにラッパーを最適に構成する方法を決定するにはどうすればよいですか?

ご協力いただきありがとうございます。ありがとうございます!

答えて

7

私はこれを数回自分でやりました。これは楽しいことができます - それはあなたのチャンスを修正する(または少なくとも隠す)悪いコードです!

Doxygenを使用すると、コードの視覚的階層を取得できます(ただし、C++ライブラリでのみ使用していますが、Cでも動作します)。その他のフリーツールもあります。

ライブラリが設計または文書化されていない場合は、そのライブラリのようにラッパークラスを構造化しないでください。これは、ユーザーの視点と、コードをどのように使用するのかを考慮するチャンスです。最初にテストケースを作成して、そのライブラリを使用している人と話をしてください。

あなたがやっていることにマッチする2つの素敵なデザインパターンは、AdapterFacadeです。

+2

+1。最初に必要な素敵なインターフェースを定義してから、Cライブラリーを使用して実装を記入してください。 –

+0

インターフェースとは、ユーザーインターフェースまたはコードインターフェースのことですか? – Jasarien

+0

私は彼がコードインターフェイスを意味すると思います。 –

2

まず、CライブラリはObjective-Cライブラリです。実際にはラッピングは一切必要ありませんが、ライブラリインターフェイスが特に面倒である場合は、必要な場合があります。

第2に、ライブラリラッパーを作成することを決めた場合は、単純にしておきます。実際に使用する予定のライブラリの中核機能を特定し、それらの機能とその機能へのインターフェイスを、目的の使用方法を念頭に置いて提供する方法を検討してください。作業したいインターフェイスを設計し、それをライブラリに実装します。

0

AppleコンパイラとライブラリにARC(Automatic Reference Counting)が追加されて以来、Objective-CとCはもはや自由に互換性がなくなりました。 (Here's ARCのドキュメントとチュートリアルのリスト)。メモリ割り当ての問題をはるかに徹底的に考える必要があり、ライブラリを「ブリッジする」必要があるかもしれません。 AppleがObj-CライブラリとCライブラリの間を橋渡しする方法については、this SO questionとそこからのリンクを参照してください。