4

FITS 画像を「スタック」できるアプリケーションを開発しようとしています。FITS 画像を読み取るには、CCFits (C++ ライブラリ) または CFITSIO (AC ライブラリ) を使用できます。ネイティブの Objective-C ライブラリはありません。

オブジェクト指向の設計が可能になるため、CCFits を使用することをお勧めします。これにより、プログラムをより適切に編成できるようになると期待しています。私はすでに CFITSIO を使用しようとしましたが、しばらくするとかなり扱いにくくなります (もちろん、これは大規模なアプリケーションの開発経験がないためかもしれません)。

全体として、これにアプローチする最良の方法は何ですか? CFITSIO 関数のラッパーを作成し、独自のクラスを作成する必要がありますか? Objective-C で C++ クラスを使用する方法はありますか? ライブラリにはかなりの数のクラスが含まれており、不透明なポインターを使用してクラスをラップできることはわかっていますが、クラスの継承などはどのように保持されますか? Objective-C で手動でクラスをサブクラス化し、そこでサブクラスをラップする必要がありますか?

4

3 に答える 3

3

Objective-C ++を使用すると、C++とObjective-Cを簡単に組み合わせることができます。XCodeでは、.mファイルの名前を.mmに変更するだけで、ファイルがObjective-C++として認識されます。次に、Objective-CコードでC ++クラスを使用できます(いくつかの制限が適用されますが、多くはありません)。

Objective-CはCの拡張機能であるため、Objective-CプログラムでCライブラリを簡単に使用できます。

于 2012-04-14T18:36:58.377 に答える
2

@myrkos が言うように、C++ と Objective-C を混在させるのは簡単です。ただし、2 つの言語がどのように相互作用するかを注意深く読んでください。特に、C++ クラスから Objective-C クラスを継承することはできません。

これは通常、実際には問題になりません。

ただし、それらは非常にうまく構成されます (つまり、Objective-C オブジェクトを C++ クラスのメンバーとして、またはその逆にすることができます - すべてが .mm ファイル内にある限り)。C++ オブジェクトを Objective-C クラスの ivar としてで保持する場合、コンストラクターとデストラクターが自動的に呼び出されます。

于 2012-04-14T19:11:59.280 に答える
0

全体として、これにアプローチする最良の方法は何ですか?

使い慣れたバリアント (CCFits) を使用してください。

CFITSIO 関数のラッパーを作成し、独自のクラスを作成する必要がありますか?

いいえ。

Objective-C で C++ クラスを使用する方法はありますか? ライブラリにはかなりの数のクラスが含まれており、不透明なポインターを使用してクラスをラップできることはわかっていますが、クラスの継承などはどのように保持されますか?

Objective-C++ を使用すると、C、Objective-C、および C++ プログラムを同じ翻訳で使用できますが、問題はほとんどありません。したがって、実装では必要に応じて Cocoa と C++ を混在させることができます。C++ クラスは ObjC 型を保持でき、ObjC 型は C++ 型を保持できます。

Objective-C で手動でクラスをサブクラス化し、そこでサブクラスをラップする必要がありますか?

CCFits ライブラリをそのまま使用してください。ObjC 型でラップすることで得られるものはほとんどなく、多くの時間を失うことになります。

一部の領域で厳密な ObjC に固執したい場合は、C++ 型を ObjC インターフェイス (ラッパー インターフェイスではなく、アプリで CCFits を使用するための高レベル インターフェイス) の背後に隠す方法を学ぶ必要があります。

于 2012-04-14T20:10:49.940 に答える